Pustaka template HTML JavaScript yang direkomendasikan untuk JQuery? [Tutup]


89

Adakah saran tentang pustaka template HTML mana yang cocok dengan JQuery? Googling menghasilkan cukup banyak perpustakaan tetapi saya tidak yakin apakah ada perpustakaan terkenal yang akan bertahan dalam ujian waktu.


21
Katakanlah Anda membawa kembali objek json dengan 100 record. Setiap record perlu menghasilkan fragmen html yang sama. Ini hanya membantu menggunakan template daripada menghasilkan markup di js. Memungkinkan desainer untuk mendesainnya juga daripada markup yang berada di dalam string dalam fungsi js
redsquare

3
@cletus - karena lebih mudah menggunakan templat berformat html daripada rangkaian lampiran
Andrey

2
Gunakan perbandingan kinerja ini untuk membantu Anda dalam pilihan Anda: jsperf.com/dom-vs-innerhtml-based-templating
AM

Jawaban:


58

Sejujurnya, pembuatan template sisi klien sangat panas saat ini, tetapi cukup sulit.

yang paling populer adalah, saya yakin:

  • pure : Ini hanya menggunakan js, bukan "sintaks" -nya sendiri
  • kumis : lumayan stabil dan enak kudengar.
  • jqote2 : sangat cepat menurut jsperfs
  • template jquery (tidak digunakan lagi):

ada banyak lainnya, tetapi Anda harus mengujinya untuk melihat mana yang paling cocok untuk Anda, dan gaya proyek Anda, yang terbaik.

Secara pribadi, saya mengalami kesulitan dengan menambahkan sintaks baru dan serangkaian logika ( mencampur logika dan template, halo ?? ), dan menggunakan js murni. Setiap template saya disimpan dalam file html-nya sendiri (./usersTable.row.html). Saya menggunakan template hanya saat konten ajaxing, dan saya memiliki beberapa file js "logika", satu untuk tabel, satu untuk div, satu untuk daftar. dan bahkan tidak satu pun untuk opsi pilih (di mana saya menggunakan metode lain).

Setiap kali saya mencoba melakukan sesuatu yang lebih rumit, saya menemukan kodenya kurang jelas dan membutuhkan lebih banyak waktu untuk menstabilkan daripada melakukannya dengan cara "lama". Logika dalam template sama sekali tidak masuk akal menurut saya, dan menambahkan sintaksnya sendiri hanya menambahkan bug yang sangat sulit dilacak.


14

jTemplates

mesin template untuk JavaScript.

Plugin ke jQuery ...

Fitur:

  • 100% di JavaScript
  • precompilator
  • Dukung JSON
  • Bekerja dengan Ajax
  • Izinkan untuk menggunakan kode JavaScript di dalam template
  • Izinkan untuk membuat template berjenjang
  • Izinkan untuk menentukan parameter dalam template
  • Segarkan Langsung! - konten pembaruan otomatis dari server ...

8

Ada dokumen diskusi yang masuk akal tentang topik ini di sini , yang mencakup berbagai alat pembuatan template. Tidak spesifik untuk jQuery.


5

Plugin Template jQuery dibuat oleh Microsoft dan diterima sebagai plugin jQuery resmi.

Namun perhatikan bahwa sekarang sudah usang.


13
dan "tidak digunakan lagi" sejak. Pengembangan dihentikan, dan ini tidak akan keluar dari versi beta. seorang ms guy, dan tim jquery-ui sedang mengerjakan template baru, berdasarkan JSRender thou;)
roselan

Huh, payah - Saya menggunakannya di seluruh aplikasi web saya :( Terima kasih atas tipnya! Apakah Anda memiliki tautan tentang mesin templat yang akan datang yang Anda sebutkan?
Andrey

1
jika semuanya berjalan lancar, jsrender by boris moore akan menemukan jalannya ke jquery-ui. Tidak perlu terburu-buru kurasa;)
roselan

1
Saya telah mengimplementasikan jsRender dalam sebuah proyek dan itu sangat menakjubkan. Layak untuk dicoba.
ASeale

4

Saya akan memeriksa json2html , itu lupa harus menulis cuplikan HTML dan sebaliknya bergantung pada transformasi JSON untuk mengubah array objek JSON menjadi daftar tidak terstruktur. Sangat cepat dan menggunakan pembuatan DOM.


4
disclaimer .. Saya menulis ini. Tapi patut untuk dicoba;)
Chad Brown

3

Beberapa tahun yang lalu saya membangun IBDOM: http://ibdom.sf.net/ | Pada Desember 2009, ini mendukung jQuery binding jika Anda mendapatkannya langsung dari trunk.

$("#foo").injectWith(collectionOfJavaScriptObjects);

atau

$("#foo").injectWith(simpleJavaScriptObject);

Selain itu, Anda sekarang dapat meletakkan semua penanda "data: propName" di atribut class = "data: propName other classnames", jadi Anda tidak perlu mengotori konten aplikasi Anda dengan penanda tersebut.

Saya belum memperbarui banyak dokumentasi di sana untuk mencerminkan peningkatan saya baru-baru ini, tetapi saya telah memiliki berbagai versi kerangka kerja ini yang diproduksi sejak 2007.

Untuk skeptis terhadap pertanyaan ini:

Kembali ketika Microsoft menemukan IE5 yang sekarang kita kenal sebagai XmlHttpRequest dan pola "ajax", bagian dari janji di balik ini adalah untuk semata-mata bertukar data antara browser web dan server. Data itu harus dikemas dalam XML, karena pada 1999/2000, XML menjadi sangat panas. Selain mengambil dokumen xml melalui jaringan dengan mekanisme panggilan balik, komponen MSXML ActiveX MS juga mendukung implementasi pra-draf dari apa yang sekarang kita kenal sebagai XSL-T dan XPath.

Menggabungkan pengambilan HTTP / XML, XPath, dan XSL-T, memberikan kreativitas yang luar biasa kepada pengembang untuk membangun "dokumen" kaya yang berperilaku sebagai "aplikasi", hanya mengirim, dan yang lebih penting, mengambil data dari server.

Mengapa pola ini berguna? Itu tergantung pada seberapa kompleks antarmuka pengguna Anda, dan seberapa besar Anda peduli dengan pemeliharaannya.

Saat membangun antarmuka markup semantik yang sangat kaya secara visual dengan CSS tingkat lanjut, hal terakhir yang ingin Anda lakukan adalah membagi potongan markup menjadi "mini-controller / views", sehingga Anda dapat .innerHTML sebuah fragmen dokumen ke dalam utama dokumen, dan inilah alasannya.

Salah satu prinsip utama dalam menjaga antarmuka pengguna html / css lanjutan dapat dikelola, adalah mempertahankan validasinya setidaknya selama fase aktif pengembangannya. Jika markup Anda divalidasi, Anda dapat fokus pada bug CSS Anda. Sekarang, jika fragmen markup akhirnya disuntikkan selama berbagai tahap interaksi pengguna, semuanya menjadi sangat sulit untuk dikelola, dan semuanya menjadi rapuh.

Idenya adalah memiliki semua konstruksi UI markup Anda dalam satu dokumen, mengambil HANYA DATA melalui jaringan, dan menggunakan kerangka kerja yang solid yang setidaknya akan menyuntikkan data Anda ke dalam konstruksi markup Anda, dan paling banyak mereplikasi konstruksi markup yang Anda tandai sebagai berulang.

Ini dimungkinkan dengan XSL-T dan XPath di IE5 +, tetapi secara virtual tidak ada browser lain. Beberapa kerangka kerja browser F / OSS telah mencoba-coba XPath tetapi itu belum cukup untuk kami andalkan.

Jadi apa hal terbaik berikutnya untuk mencapai pola seperti itu? IBDOM. Dapatkan data dari server Anda, masukkan ke dalam dokumen Anda. dengan mudah.


satu hal lagi: IBDOM menggunakan 100% metode DOM murni, dan nol innerHTML.
Chris Holland

catatan lain: IBDOM mengimplementasikan apa yang saya sebut "forkedLoopExecution" yang merupakan komponen yang digunakan secara internal serta sesuatu yang dapat digunakan sendiri. Inilah masalahnya: katakanlah Anda memodifikasi DOM melalui createElement dan appendChild, dalam beberapa jenis konstruksi perulangan yang harus melewati array yang cukup besar dari objek data besar: sebagian besar browser tidak akan "mengecat ulang" antarmuka pengguna, hingga kode yang mempengaruhi DOM "mengembalikan". Dalam "putaran" besar dengan banyak data, hasil penelusuran kami mungkin memerlukan waktu setengah detik hingga beberapa detik sebelum menampilkan semuanya dalam satu bagian.
Chris Holland

solusinya: eksekusi loop bercabang memanfaatkan eksekusi rekursif yang diinduksi setTimeout sepanjang masa pengumpulan data yang berulang kali diteruskan ke dasarnya "kembali dan cat ulang" pada setiap iterasi loop, memberi Anda perasaan rendering instan ini: "memberi pengguna sesuatu untuk dilihat -yang benar sekarang ".
Chris Holland

2

Anda harus melihat Javascript-Templates, ini adalah mesin template kecil yang digunakan dalam plugin jQuery File Upload yang terkenal, dan dikembangkan oleh penulis yang sama, Sebastian Tschan (@blueimp)

https://github.com/blueimp/JavaScript-Templates

Ikuti panduan penggunaan yang dibuat oleh Sebastian, hapus saja baris ini

document.getElementById("result").innerHTML = tmpl("tmpl-demo", data);

Gantilah dengan yang ini

$('#result').html(tmpl('tmpl-demo', data));

Jangan lupa untuk menambahkan tag hasil div di file HTML Anda juga

<div id="result"></div>

Nikmati

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.