Apa pro dan kontra dari Jade dan EJS untuk template Node.js? [Tutup]

118

Jade versus EJS, apa pro dan kontra dari masing-masing dan untuk tujuan apa masing-masing dirancang?

Apakah ada mesin templat lain yang kompatibel dengan ekspres dan mengapa?

HaoQi Li
sumber

Jawaban:

178

Saya menggunakan Jade sebelumnya. Hal yang menyenangkan tentang Jade adalah Anda memiliki sintaks yang lebih pendek yang berarti Anda dapat mengetik lebih cepat. The blockdi Jade cukup kuat yang dapat membantu saya banyak ketika berhadapan dengan kode HTML yang kompleks.

Di sisi lain, sulit untuk melakukan beberapa hal sederhana di Jade, seperti menambahkan kelas ke dalam DIV berdasarkan kondisi if yang sederhana. Saya perlu meletakkan sesuatu seperti ini

- if (isAdmin)
  div.admin.user
- else
  div.user

Jade juga tidak membedakan antara tag dan variabel yang membuat kode sangat membingungkan (setidaknya untuk saya)

a(href='/user/' + user.id)= user.name

Jade juga tidak ramah desainer. Teman-teman desainer saya sering memberi saya HTML dan CSS (Mereka beralih ke LESS baru-baru ini tetapi masih ingin menggunakan HTML), dan untuk alasan itu jika saya menggunakan Jade, saya perlu mengonversi HTML ke Jade. Juga di Jade, kita perlu menggunakan lekukan, jadi jika struktur HTML Anda menjadi rumit, kode Anda akan terlihat mengerikan (terutama tabel). Terkadang, saya bahkan tidak tahu level saya saat ini

table
  thead
    tr
      td
        a
          img
    tr
      td
  tbody
    tr
      td

Baru-baru ini, saya beralih ke EJS dan sejauh ini saya senang dengannya. Ini sangat dekat dengan HTML murni dan menggunakan sintaks yang sama dengan mesin template frontend yang saya gunakan (Template garis bawah). Saya harus mengatakan bahwa semuanya lebih mudah dengan EJS. Saya tidak perlu melakukan semua konversi saat menerima template HTML dari teman desainer saya. Yang harus saya lakukan adalah mengganti bagian dinamis dengan variabel yang diteruskan dari ExpressJS. Hal-hal yang membuat saya gila saat menggunakan Jade diselesaikan di EJS

<div class="<%= isAdmin? 'admin': '' %> user"></div>

Dan saya bisa tahu ada apa dengan EJS

<a href="/user/<%= user.id %>"><%= user.name %></a>

Jika Anda melewatkan sintaks singkat Jade (seperti saya), Anda dapat menggabungkan Zen-Coding dan EJS yang dapat membantu Anda mempercepat kemajuan secara umum. Tentang kinerja, saya tidak melihat perbedaan apa pun

Namun, EJS tidak sekuat Jade, ia tidak memiliki blok secara default (orang ini menerapkan fitur blok untuk EJS https://github.com/RandomEtc/ejs-locals )

Jadi, sepenuhnya tergantung pada Anda untuk memilih apa pun yang membuat Anda nyaman. Tetapi jika Anda akan menggunakan mesin template lain untuk frontend seperti saya, lebih baik jika Anda menggunakan hal yang sama untuk kedua sisi

Pembaruan 16 Desember 2013: Baru-baru ini, saya telah beralih dari EJS ke Swig (yang memiliki konsep serupa dengan Jinja2 di dunia Python). Alasan utamanya adalah tidak adanya blokir di EJS bahkan dengan bantuan ejs-locals. Swig juga menggunakan HTML biasa untuk templat dan banyak fitur keren yang harus dimiliki mesin templat misalnya filter dan tag yang tidak dimiliki EJS.

Tan Nguyen
sumber
1
Mengenai tidak mengetahui level Anda, harus disebutkan giok memiliki dukungan baru untuk beberapa tag dalam satu baris. Dari dokumentasi Jade, 'Untuk menghemat ruang, jade menyediakan sintaksis sebaris untuk tag bersarang.'a: img' setara dengan '<a> <img /> </a>'.
Verdi Erel Ergün
1
Saya sudah mencobanya Jadesatu atau dua tahun lalu. Mungkin sudah lebih baik sekarang. Namun menyesali poin pertama saya, tidak akan mudah untuk menyiasatinya
Tan Nguyen
1
Pernahkah Anda melihat html2jade ?
beatgammit
4
Saya melakukan alat itu untuk Anda, tetapi tetap saja, setiap kali perancang memberikan sesuatu kepada saya, saya perlu melakukan konversi (itu menjengkelkan)
Tan Nguyen
1
Saya hanya ingin mencatat (mengenai poin pertama Anda tentang kondisional) bahwa Anda mungkin dapat menggunakan sintaks terner untuk kasus penggunaan ini. Lihat pertanyaan stack overflow ini: stackoverflow.com/questions/9488029/…
Rob Gibbons
43

Saya tidak akan mengatakan bahwa yang satu lebih baik dari yang lain. Mereka berbeda, itu pasti, tetapi "lebih baik" adalah istilah yang relatif.

Saya lebih suka EJS karena menurut saya HTML tidak terlalu buruk, ditambah lagi memungkinkan saya untuk bekerja dengan orang lain tanpa mereka harus belajar Jade.

Namun, Jade cukup bersih dan membuat beberapa kode rapi dalam tampilan Anda.

Pilih apa pun yang Anda rasa lebih nyaman.

Hector Correa
sumber