Rumah >hujung hadapan web >tutorial js >Panduan pemula ' s ke hendal
Takeaways Key
<span><span><span><script</span> src<span>="/path/to/handlebars.min.js"</span>></span><span><span></script</span>></span></span>Ia menyimpan halaman HTML anda bersih dan memisahkan templat logik-kurang dari logik perniagaan dalam fail JavaScript anda, dengan itu meningkatkan struktur aplikasi (dan juga penyelenggaraan dan skalabilitasnya)
ia memudahkan tugas mengemas kini data secara manual pada pandangan
templat
Dengan markup ini, kita dapat melihat apa yang perlu kita lakukan. Dalam fail JavaScript anda, kami perlu mengambil templat dari dokumen HTML. Dalam contoh berikut, kami akan menggunakan ID templat untuk tujuan ini. Selepas templat telah diambil, kami dapat menyusunnya dengan menggunakan kaedah handlebars.Compile () yang mengembalikan fungsi. Fungsi ini kemudian dilaksanakan dengan lulus konteks sebagai hujah. Apabila pelaksanaan selesai, fungsi mengembalikan HTML yang dikehendaki dengan semua pembolehubah yang digantikan dengan nilai yang sepadan. Pada ketika ini kita boleh menyuntik HTML ke laman web kami.
<span><span><span><script</span> src<span>="/path/to/handlebars.min.js"</span>></span><span><span></script</span>></span></span>Mengubah keterangan ini ke dalam hasil kod dalam coretan berikut:
sintaks
<span><span><span><script</span> id<span>="handlebars-demo"</span> type<span>="text/x-handlebars-template"</span>></span><span><span><div>My name is {{name}}. I am a {{occupation}}.</div></span></span><span><span></script</span>></span></span>
Sekarang sudah tiba masanya untuk menyelam sedikit lebih mendalam ke hendal. Kami akan melalui beberapa istilah penting dan sintaks yang membentuk teras hendal.
kita sudah melihat ungkapan di bahagian di atas. Pembolehubah yang digunakan di dalam templat dikelilingi oleh pendakap keriting berganda {{}} dan dikenali sebagai ekspresi:
HTML Escaping
hendal boleh melepaskan nilai yang dikembalikan oleh ungkapan. Sebagai contoh watak
demo langsung yang menunjukkan ciri ini boleh didapati dalam demo codepen ini kita juga boleh menulis komen di dalam templat handlebars. Sintaks untuk komen hendal adalah {{! TypeyourcommentHere}}. Walau bagaimanapun, setiap komen yang mempunyai}} di dalamnya atau mana-mana simbol lain yang mempunyai makna khas dalam hendal hendaklah ditulis dalam bentuk {{!-typeyourcommenthere--}}. Komen Handlebars tidak dapat dilihat di HTML tetapi jika anda ingin menunjukkannya, anda boleh menggunakan komen HTML standard: . Jika kita memohon semua konsep ini untuk templat yang kita gunakan, kita boleh membuat kod yang ditunjukkan di bawah:
yang akan mengakibatkan penyemak imbas tidak menunjukkan kandungan di dalam komen HTML standard. Demo contoh ini boleh didapati di sini.
Dalam contoh ini, kami akan menggunakan template berikut: dengan menyediakan pembolehubah konteks ini:
pembantu Walaupun hendal adalah enjin templat yang kurang logik, ia boleh melaksanakan logik mudah menggunakan pembantu. Penolong Handle adalah pengecam mudah yang boleh diikuti oleh parameter (dipisahkan oleh ruang), seperti yang ditunjukkan di bawah:
Setiap penolong digunakan untuk melangkah ke atas array. Sintaks penolong adalah {{#each arrayname}} yourContent {{/each}}. Kita boleh merujuk kepada item array individu dengan menggunakan kata kunci ini di dalam blok. Indeks elemen array boleh diberikan dengan menggunakan {{@index}}. Contoh di bawah menggambarkan penggunaan setiap penolong. Jika kita menggunakan template berikut:
Demo langsung contoh ini boleh didapati di Codepen.
falsy .
Untuk menunjukkan bagaimana penolong jika berfungsi, mari kita pertimbangkan templat di bawah:
Kami akan memperoleh keputusan yang dilaporkan di bawah: falsy
Pembantu Custom
Anda boleh membuat pembantu anda sendiri untuk melakukan logik yang kompleks menggunakan sistem ekspresi yang disediakan oleh hendal. Terdapat dua jenis pembantu: pembantu fungsi dan pembantu blok. Takrif pertama dimaksudkan untuk ungkapan tunggal, manakala yang terakhir digunakan untuk ekspresi blok. Hujah -hujah yang diberikan kepada fungsi panggil balik adalah parameter yang ditulis selepas nama pembantu, dipisahkan oleh ruang. Pembantu dibuat menggunakan handlebars.RegistHelper () Kaedah: Sintaks untuk penolong fungsi adalah {{HelperName Parameter1 Parameter2 ...}}. Untuk lebih memahami bagaimana untuk meneruskan pelaksanaannya, mari kita buat penolong fungsi yang dipanggil StudyStatus yang mengembalikan rentetan yang akan "diluluskan" jika lulus = 2015:
Demo langsung contoh ini boleh didapati di sini. Helper Blok Custom
Apabila kami mendaftarkan pembantu blok tersuai, hendal secara automatik menambah objek pilihan sebagai parameter terakhir ke fungsi panggil balik. Objek Pilihan ini mempunyai kaedah FN () yang membolehkan kita mengubah konteks objek sementara untuk mengakses harta tertentu. Mari kita ubah contoh bahagian sebelumnya dengan menggunakan pembantu blok bernama StudyStatus tetapi dengan pembolehubah konteks yang sama:
Dan inilah demo codepen.
ia akan memberikan hasil berikut:
Pertama, anda perlu memasang hendal di seluruh dunia dengan menggunakan hendal pemasangan NPM -G. Sila, pastikan templat yang berbeza ditulis dalam fail berasingan dengan nama fail yang berbeza dan dengan sambungan .handlebars (contohnya demo.handlebars). Tidak perlu menggunakan tag Sekarang simpan semua fail templat dalam satu folder bernama templat. Anda boleh menggunakan mana -mana nama folder yang anda kehendaki tetapi jika anda berbuat demikian, jangan lupa untuk menukar arahan berikut dengan sewajarnya. Oleh itu, buka terminal dan laksanakan perintah: Perintah ini akan menghasilkan fail bernama templatescompiled.js yang mengandungi semua templat yang disusun. Pengkompil akan memasukkan templat dalam handlebars.templates. Jika fail input adalah demo.handlebars, maka ia akan dimasukkan ke handlebars.templates.demo
sekarang kita boleh menggunakan templat yang pada asalnya hadir dalam demo.handlebars dengan menggunakan kod berikut:
Kod demo precompilation ini boleh didapati di GitHub. KESIMPULAN
Templat Handlebars adalah struktur berasaskan teks yang mentakrifkan susun atur dan struktur kandungan HTML dinamik dalam pembangunan web. Handlebars adalah perpustakaan templating JavaScript yang membolehkan anda membuat templat ini, menjadikannya lebih mudah untuk menghasilkan kandungan HTML berdasarkan data. Handlebar ini disertakan dalam pendakap keriting berganda {{}}. Contohnya: Hello, {{name}}! Hello, John! <span>// Retrieve the template data from the HTML (jQuery is used here).var template = $('#handlebars-demo').html();
</span><span>// Compile the template data into a functionvar templateScript = Handlebars.compile(template);
</span><span>var context = { "name" : "Ritesh Kumar", "occupation" : "developer" };
</span><span>// html = 'My name is Ritesh Kumar. I am a developer.'var html = templateScript(context);
</span><span>// Insert the HTML code into the page$(document.body).append(html);</span>
digunakan dengan pembolehubah konteks yang dilaporkan di bawah:
<span>My name is {{name}}</span>
Komen
<span><span><span><script</span> src<span>="/path/to/handlebars.min.js"</span>></span><span><span></script</span>></span></span>
Jika kita menggunakan templat sebelumnya dengan pembolehubah konteks yang dilaporkan di bawah:
<span><span><span><script</span> id<span>="handlebars-demo"</span> type<span>="text/x-handlebars-template"</span>></span><span><span><div>My name is {{name}}. I am a {{occupation}}.</div></span></span><span><span></script</span>></span></span>
<span>// Retrieve the template data from the HTML (jQuery is used here).var template = $('#handlebars-demo').html();
</span><span>// Compile the template data into a functionvar templateScript = Handlebars.compile(template);
</span><span>var context = { "name" : "Ritesh Kumar", "occupation" : "developer" };
</span><span>// html = 'My name is Ritesh Kumar. I am a developer.'var html = templateScript(context);
</span><span>// Insert the HTML code into the page$(document.body).append(html);</span>
Blok
<span>My name is {{name}}</span>
Untuk memahami lebih baik topik ini, kami akan menggunakan contoh di bawah di mana kami menggunakan setiap penolong (dibincangkan secara terperinci kemudian). Seperti yang anda harapkan, yang terakhir melangkah ke atas item array.
I am learning {{language}}. It is {{{adjective}}}.
Kami akan memperoleh output yang ditunjukkan di bawah:
<span>var context = {"language" : "<h3>Handlebars</h3>","adjective": "<h3>awesome</h3>"}</span>
I am learning <span><span><span><h3</span>></span>Handlebars<span><span></h3</span>></span>. It is <span><span><h3</span>></span>awesome<span><span></h3</span>></span></span>
Istilah "blok", "penolong", dan "penolong blok" kadang-kadang digunakan secara bergantian kerana kebanyakan pembantu terbina dalam adalah blok, walaupun terdapat pembantu fungsi yang sedikit berbeza dari pembantu blok. Kami akan membincangkannya semasa meliputi pembantu tersuai. setiap penolong
<span><span><span><script</span> src<span>="/path/to/handlebars.min.js"</span>></span><span><span></script</span>></span></span>
bersempena dengan pembolehubah konteks ini:
<span><span><span><script</span> id<span>="handlebars-demo"</span> type<span>="text/x-handlebars-template"</span>></span><span><span><div>My name is {{name}}. I am a {{occupation}}.</div></span></span><span><span></script</span>></span></span>
<span>// Retrieve the template data from the HTML (jQuery is used here).var template = $('#handlebars-demo').html();
</span><span>// Compile the template data into a functionvar templateScript = Handlebars.compile(template);
</span><span>var context = { "name" : "Ritesh Kumar", "occupation" : "developer" };
</span><span>// html = 'My name is Ritesh Kumar. I am a developer.'var html = templateScript(context);
</span><span>// Insert the HTML code into the page$(document.body).append(html);</span>
Jika penolong kebenaran
, hendal akan menjadikan blok tersebut. Kami juga boleh menentukan seksyen templat yang dikenali sebagai "seksyen lain", dengan menggunakan {{else}}. Kecuali pembantu adalah kebalikan dari penolong jika. Ia menjadikan blok apabila keadaan menilai nilai
<span>My name is {{name}}</span>
I am learning {{language}}. It is {{{adjective}}}.
ini berlaku kerana array kosong adalah <span>var context = {"language" : "<h3>Handlebars</h3>","adjective": "<h3>awesome</h3>"}</span>
Helper Fungsi Custom
I am learning <span><span><span><h3</span>></span>Handlebars<span><span></h3</span>></span>. It is <span><span><h3</span>></span>awesome<span><span></h3</span>></span></span>
Dalam contoh kami parameter hanya satu. Walau bagaimanapun, jika kita mahu lulus lebih banyak parameter ke fungsi panggil balik pembantu kita boleh menulisnya dalam templat selepas parameter pertama dipisahkan oleh ruang.
mari kita mengembangkan contoh dengan templat ini:
<span><!-- I am learning {{language}} -->I am learning {{language}}. It is {{!--adjective--}}</span>
<span>var context = {"language" : "Handlebars","adjective": "awesome"}</span>
<span><!-- I am learning Handlebars -->I am learning Handlebars. It is</span>
Pembantu blok tersuai digunakan dengan cara yang sama seperti pembantu fungsi, tetapi sintaks agak berbeza. Sintaks pembantu blok adalah: <span><span><span><script</span> src<span>="/path/to/handlebars.min.js"</span>></span><span><span></script</span>></span></span>
<span><span><span><script</span> id<span>="handlebars-demo"</span> type<span>="text/x-handlebars-template"</span>></span><span><span><div>My name is {{name}}. I am a {{occupation}}.</div></span></span><span><span></script</span>></span></span>
Jika kod ini digunakan bersempena dengan templat yang ditakrifkan di bawah
<span>// Retrieve the template data from the HTML (jQuery is used here).var template = $('#handlebars-demo').html();
</span><span>// Compile the template data into a functionvar templateScript = Handlebars.compile(template);
</span><span>var context = { "name" : "Ritesh Kumar", "occupation" : "developer" };
</span><span>// html = 'My name is Ritesh Kumar. I am a developer.'var html = templateScript(context);
</span><span>// Insert the HTML code into the page$(document.body).append(html);</span>
<span>My name is {{name}}</span>
Templat separa
I am learning {{language}}. It is {{{adjective}}}.
<span>var context = {"language" : "<h3>Handlebars</h3>","adjective": "<h3>awesome</h3>"}</span>
demo langsung kod ini boleh didapati dalam demo codepen ini. I am learning <span><span><span><h3</span>></span>Handlebars<span><span></h3</span>></span>. It is <span><span><h3</span>></span>awesome<span><span></h3</span>></span></span>
<span><!-- I am learning {{language}} -->I am learning {{language}}. It is {{!--adjective--}}</span>
Sekarang kita perlu memasukkan templatescompiled.js dalam fail HTML sebagai skrip biasa. Adalah penting untuk diperhatikan bahawa kita tidak perlu memuatkan keseluruhan perpustakaan hendal kerana pengkompil itu sendiri tidak diperlukan lagi. Kita boleh menggunakan "runtime" yang lebih kecil sebaliknya: <span><span><span><script</span> src<span>="/path/to/handlebars.min.js"</span>></span><span><span></script</span>></span></span>
<span><span><span><script</span> id<span>="handlebars-demo"</span> type<span>="text/x-handlebars-template"</span>></span><span><span><div>My name is {{name}}. I am a {{occupation}}.</div></span></span><span><span></script</span>></span></span>
output akhir akan menjadi seperti berikut:
<span>// Retrieve the template data from the HTML (jQuery is used here).var template = $('#handlebars-demo').html();
</span><span>// Compile the template data into a functionvar templateScript = Handlebars.compile(template);
</span><span>var context = { "name" : "Ritesh Kumar", "occupation" : "developer" };
</span><span>// html = 'My name is Ritesh Kumar. I am a developer.'var html = templateScript(context);
</span><span>// Insert the HTML code into the page$(document.body).append(html);</span>
Sekiranya anda tidak mahu memuat turun perpustakaan tetapi anda masih mahu mencubanya, anda boleh bermain dengan hendal dalam talian di http://tryhandlebarsjs.com/.
Apakah template hendal?
Dalam template handlebar mudah ini, {{name}} adalah pemegang tempat untuk pembolehubah yang disebut "Nama . " Apabila anda membuat templat ini dengan data tertentu, seperti {name: "John"}, hendal menggantikan {{name}} dengan nilai data yang sepadan:
templat hendal sangat berguna untuk mewujudkan kandungan HTML yang konsisten dan dikekalkan, kerana mereka memisahkan persembahan (struktur HTML) dari data, menjadikannya lebih mudah untuk mengemaskini dan menggunakan semula template di seluruh aplikasi web anda. Handlebars menawarkan ciri -ciri yang lebih canggih, menjadikannya sesuai untuk keperluan dan projek templat yang kompleks di mana ekosistem dan sokongan komuniti yang lebih besar adalah penting. Misai, sebaliknya, lebih mudah dan mengikuti falsafah "kurang logik", menjadikannya pilihan yang baik untuk projek-projek yang mengutamakan kesederhanaan dan mudah alih di pelbagai bahasa pengaturcaraan.
Atas ialah kandungan terperinci Panduan pemula ' s ke hendal. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!