Rumah >hujung hadapan web >tutorial js >Gambaran keseluruhan enjin templat JavaScript
3
Artikel ini dikaji semula oleh Chris Perry dan Ritesh Kumar. Terima kasih kepada semua pengulas rakan sebaya SitePoint untuk membuat kandungan SitePoint yang terbaik boleh!
Dalam artikel ini kita akan memberikan gambaran keseluruhan templat dalam JavaScript. Kami akan terlebih dahulu membincangkan templat JavaScript, apabila kita harus menggunakannya dan bagaimana kita melaksanakannya, sebelum pergi ke sedikit lebih terperinci mengenai beberapa enjin templating yang popular di luar sana. Kami akan memberi tumpuan kepada misai, hendal dan template jQuery.
Takeaways Key
Templat JavaScript menawarkan kaedah memisahkan struktur HTML dari kandungan, meningkatkan pemeliharaan asas kod. Mereka sangat bermanfaat untuk aplikasi web masa nyata dan pengantarabangsaan, yang sering memerlukan kandungan yang berbeza untuk dipaparkan menggunakan format yang sama.Mustache.js adalah sistem templating yang tidak berbilang bahasa dan logik yang sesuai untuk projek-projek kecil dan prototaip cepat. Ia mudah, tidak mempunyai kebergantungan, dan tidak memerlukan template precompiled. Selain itu, projek -projek boleh dengan mudah menaik taraf ke handlebars.js kemudian kerana templat kebanyakannya sama.
Sebaik sahaja kita mendapati diri kita termasuk HTML di dalam rentetan JavaScript kita harus mula memikirkan tentang apa manfaat JavaScript Templates dapat memberi kita. Pemisahan kebimbangan adalah sangat penting apabila membina pangkalan kod yang boleh dipelihara, jadi apa -apa yang dapat membantu kita mencapai ini harus diterokai. Dalam perkembangan web front-end ini, ini disambungkan apabila memisahkan HTML dari JavaScript (ini berfungsi dengan baik di mana kita tidak boleh memasukkan JavaScript dalam HTML).
Beberapa senario biasa yang boleh mendapat manfaat daripada templat JavaScript adalah aplikasi web masa nyata (contohnya aplikasi streaming langsung untuk ulasan acara), atau pengantarabangsaan (i18n), yang sering memerlukan kandungan yang berbeza dipaparkan menggunakan pemformatan yang sama .
Kami akan lebih terperinci mengenai ini dengan contoh perpustakaan tertentu, tetapi pada dasarnya ia semudah termasuk perpustakaan yang kami pilih, mengambil templat kami dan menjadikannya bersama beberapa data.
Kebanyakan perpustakaan menyokong kedua -dua templat dalam talian dan luaran. Templat sebaris sangat bagus untuk apabila kami mempunyai sedikit templat atau kami tahu bahawa kami akan menggunakan templat yang disertakan pada setiap beban halaman, tetapi secara amnya templat kami harus luaran. Templat luaran membawa banyak faedah, terutamanya bahawa templat tidak akan dimuat turun kepada pelanggan melainkan jika ia diperlukan oleh halaman.mistache.js
mata utama
<span><span><span><script</span> id<span>="template"</span> type<span>="x-tmpl-mustache"</span>></span><span> </span></span><span><span> <span><p>Use the <strong>{{power}}</strong>, {{name}}!</p> </span></span></span><span><span></span><span><span></script</span>></span> </span>
//Grab the inline template var template = document.getElementById('template').innerHTML; //Parse it (optional, only necessary if template is to be used again) Mustache.parse(template); //Render the data into the template var rendered = Mustache.render(template, {name: "Luke", power: "force"}); //Overwrite the contents of #target with the rendered HTML document.getElementById('target').innerHTML = rendered;lihat contoh pena mistache.js oleh sitepoint (@sitePoint) pada codepen.
Seperti yang anda lihat dalam contoh ini, fungsi misai. Dalam kes ini kita menggantikan nama dan pembolehubah kuasa dengan rentetan mudah, tetapi mungkin untuk melakukan lebih banyak lagi. Sebagai contoh gelung di atas array, atau gunakan fungsi rendering khas yang menggunakan pandangan semasa sebagai hujah pandangannya.
Mustache.js adalah sempurna untuk projek -projek kecil dan prototaip cepat di mana kerumitan templat adalah minimum. Perkara penting yang perlu diperhatikan ialah kita boleh memulakan projek dengan mistache.js dan kemudian dengan mudah menaik taraf ke handlebars.js kemudian sebagai templat (kebanyakannya) sama.
Jika anda ingin membaca lebih lanjut mengenai misai, lihat: Membuat templat HTML dengan mistache.js.
handlebars.js dibina di atas misai dan kebanyakannya serasi dengan template misai. Ringkasnya, ia menyediakan segala -galanya mistache.js menyediakan, ditambah ia menyokong ekspresi blok dan templat precompiled. Templat precompiled adalah masalah besar kerana mereka meningkatkan prestasi dengan margin yang besar (dalam ujian prestasi kasar, templat handals.js precompiled yang diberikan pada kira -kira separuh masa template misai). Ekspresi blok membolehkan anda memasukkan lebih banyak logik dalam templat anda; Salah satu contoh yang lebih biasa adalah pengetua maju - contohnya. Buat A
<span><span><span><script</span> id<span>="template"</span> type<span>="x-tmpl-mustache"</span>></span><span> </span></span><span><span> <span><p>Use the <strong>{{power}}</strong>, {{name}}!</p> </span></span></span><span><span></span><span><span></script</span>></span> </span>
//Grab the inline template var template = document.getElementById('template').innerHTML; //Parse it (optional, only necessary if template is to be used again) Mustache.parse(template); //Render the data into the template var rendered = Mustache.render(template, {name: "Luke", power: "force"}); //Overwrite the contents of #target with the rendered HTML document.getElementById('target').innerHTML = rendered;
lihat contoh pena pena oleh sitepoint (@sitePoint) pada codepen
handlebars.js sangat sesuai untuk projek -projek di mana prestasi adalah penting dan kami tidak bimbang untuk menambah 18kb ke berat halaman. Ia juga cara untuk pergi jika kita mahu menggunakan ekspresi blok.
Perhatikan bahawa untuk melihat manfaat prestasi handlebars.js (dan saiz fail yang sangat dikurangkan) kita mesti menggunakan templat precompiled. Untuk berbuat demikian dengan cekap, kita harus menambah kompilasi template handlebars.js ke dalam proses binaan kami (Grunt mempunyai pemalam yang hebat untuk ini).
Jika anda ingin mengetahui lebih lanjut mengenai hendal, lihat: Panduan Pemula untuk Hendal.
template jQuery tidak begitu popular seperti mistache.js atau handlebars.js tetapi kita tidak boleh mengabaikannya. Templat adalah berbeza dengan template misai kerana ia hanya HTML biasa tanpa sintaks baru. Daripada teknik penggantian token ia menggunakan atribut data untuk menunjukkan di mana data harus dimasukkan dalam serpihan HTML.
<span><span><span><script</span> id<span>="template"</span> type<span>="text/x-handlebars-template"</span>></span><span> </span></span><span><span> <span><p>Use the <strong>{{power}}</strong>, {{name}}!</p> </span></span></span><span><span></span><span><span></script</span>></span></span>
//Grab the inline template var template = document.getElementById('template').innerHTML; //Compile the template var compiled_template = Handlebars.compile(template); //Render the data into the template var rendered = compiled_template({name: "Luke", power: "force"}); //Overwrite the contents of #target with the renderer HTML document.getElementById('target').innerHTML = rendered;
Lihat contoh template pena jQuery oleh sitepoint (@sitePoint) pada codepen.
template jQuery sangat sesuai untuk projek -projek yang sudah termasuk jQuery kerana saiz failnya sangat kecil. Walau bagaimanapun, jika projek anda tidak akan menggunakan jQuery maka sukar untuk mengesyorkan memandangkan jumlah saiz fail.
Sudah tentu banyak penyelesaian lain untuk masalah ini yang tidak akan kita sampaikan secara terperinci dalam artikel ini. Berikut adalah gambaran yang sangat cepat mengenai beberapa pilihan popular yang lain;
Underscore adalah perpustakaan JavaScript yang popular yang menyediakan fungsi templat di antara pelbagai ciri lain. Secara lalai ia tidak menggunakan sintaks pendakap keriting berganda yang digunakan oleh misai, sebaliknya memilih pembatas gaya ERB ().
Seperti underscore.js, templat JS tertanam menggunakan sintaks gaya ERB untuk templat. Satu perkara yang perlu diperhatikan dengan EJS ialah templat yang mestilah fail luaran - mereka tidak boleh sebaris.
Jadi mana yang terbaik? Seperti kebanyakan masalah pembangunan, tidak ada peluru perak. Ia bergantung pada banyak perkara;
Sebaik sahaja kita berfikir tentang faktor -faktor ini kita boleh membuat pilihan yang berpendidikan dari senarai di atas. Walau bagaimanapun, seperti yang dinyatakan secara ringkas sebelum ini, strategi fleksibel yang baik adalah untuk melaksanakan misaiche.js terlebih dahulu dan kemudian bertukar ke handlebars.js kemudian jika fungsi tambahan atau manfaat prestasi diperlukan.
mahu berbunyi? Sila tinggalkan komen di bawah!
Express.js, rangka kerja aplikasi web yang popular untuk node.js, menyokong pelbagai enjin templating. Sebaik sahaja anda telah memilih enjin templat, anda boleh menetapkannya sebagai enjin lalai di Express.js. Ini membolehkan anda membuat pandangan menggunakan enjin yang anda pilih, memudahkan proses menghasilkan HTML dinamik. Ciri dalam JavaScript yang membolehkan interpolasi rentetan dan rentetan pelbagai baris. Walaupun mereka boleh digunakan untuk menjana HTML, mereka tidak mempunyai banyak ciri yang disediakan oleh enjin templat, seperti sokongan untuk komponen yang boleh diguna semula dan pemisahan kebimbangan. Walau bagaimanapun, mereka boleh berguna untuk kes penggunaan mudah di mana enjin templating penuh tidak diperlukan. Enjin bergantung kepada keperluan projek anda dan keutamaan peribadi. Pertimbangkan faktor -faktor seperti kerumitan projek anda, lengkung pembelajaran enjin, dan ciri -ciri yang ditawarkannya. Ia juga merupakan idea yang baik untuk melihat komuniti dan sokongan di sekitar enjin. . Sesetengah enjin lebih cepat dalam menyusun templat, manakala yang lain unggul pada rendering. Walau bagaimanapun, bagi kebanyakan aplikasi web, perbezaan ini tidak mungkin mempunyai kesan yang ketara terhadap prestasi. , walaupun secara amnya tidak disyorkan melainkan jika anda mempunyai keperluan khusus yang tidak dipenuhi oleh enjin yang ada. Membuat enjin templating memerlukan pemahaman yang mendalam tentang JavaScript dan boleh memakan masa. kerana kesilapan sering berlaku semasa runtime. Walau bagaimanapun, kebanyakan enjin memberikan mesej ralat yang berguna yang boleh membimbing anda ke arah sumber masalah. Ia juga merupakan idea yang baik untuk menggunakan linter untuk menangkap kesilapan sintaks. digunakan dalam konteks lain. Sebagai contoh, mereka boleh digunakan untuk menjana e-mel, PDF, atau apa-apa jenis kandungan berasaskan teks. Kelebihan utama enjin templat adalah keupayaan mereka untuk memisahkan data dari persembahan, yang boleh berguna dalam pelbagai aplikasi.
Atas ialah kandungan terperinci Gambaran keseluruhan enjin templat JavaScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!