Takeaways Key
<span><span><span><script</span> src<span>="/path/to/handlebars.min.js"</span>></span><span><span></script</span>></span></span>
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>
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>
<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>
<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}}}.
<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>
<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>
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}}}.
<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>
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>
<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>
<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>
I am learning {{language}}. It is {{{adjective}}}.
<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>
<span><!-- I am learning {{language}} -->I am learning {{language}}. It is {{!--adjective--}}</span>
<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>
<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!