Node.js şablonlama için hem Jade hem de EJS'nin artıları ve eksileri nelerdir? [kapalı]


118

Jade'e karşı EJS, her birinin artıları ve eksileri nelerdir ve her biri hangi amaçlar için tasarlanmıştır?

İyi olan başka ekspres uyumlu şablon motorları var mı ve neden?

Yanıtlar:


179

Daha önce Jade kullandım. Jade ile ilgili güzel olan şey, daha kısa bir söz dizimine sahip olmanız, bu da daha hızlı yazabileceğiniz anlamına gelir. blockJade karmaşık HTML kodu ile uğraşırken bana çok yardımcı olabilir oldukça güçlüdür.

Öte yandan, Jade'de basit bir if koşuluna dayalı bir DIV'ye sınıflar eklemek gibi basit şeyler yapmak zordur. Bunun gibi bir şey koymam lazım

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

Jade ayrıca, kodu çok kafa karıştırıcı yapan etiketler ve değişkenler arasında ayrım yapmaz (en azından benim için)

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

Jade aynı zamanda tasarımcı dostu değil. Tasarımcı arkadaşlarım bana genellikle HTML ve CSS veriyor (Son zamanlarda LESS'e geçtiler ama yine de HTML kullanmak istiyorlar) ve bu nedenle Jade'i kullanırsam HTML'yi Jade'e dönüştürmem gerekiyor. Ayrıca Jade'de girintileri kullanmamız gerekiyor, bu yüzden HTML yapınız karmaşıklaşırsa, kodunuz korkunç görünecektir (özellikle tablolar). Bazen hangi seviyede olduğumu bile bilmiyorum

table
  thead
    tr
      td
        a
          img
    tr
      td
  tbody
    tr
      td

Son zamanlarda EJS'ye geçtim ve şu ana kadar memnunum. Saf HTML'ye çok yakın ve kullandığım ön uç şablon motoruyla aynı sözdizimini kullanıyor (Alt Çizgi şablonu). EJS ile her şeyin daha kolay olduğunu söylemeliyim. Tasarımcı arkadaşımdan HTML şablonları alırken tüm dönüşümü yapmak zorunda değilim. Tek yapmam gereken dinamik parçaları ExpressJS'den geçirilen değişkenlerle değiştirmek. Jade kullanırken beni çıldırtan şeyler EJS'de çözüldü

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

Ve EJS ile ne olduğunu anlayabiliyorum

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

Jade'in kısa sözdizimini özlüyorsanız (benim gibi), genel olarak ilerlemeyi hızlandırmanıza yardımcı olabilecek Zen-Coding ve EJS'yi birleştirebilirsiniz. Performans hakkında herhangi bir fark görmüyorum

Ancak, EJS Jade kadar güçlü değildir, varsayılan olarak bloklara sahip değildir (bu adam EJS için bir blok özelliği uygulamıştır https://github.com/RandomEtc/ejs-locals )

Bu yüzden, sizi rahat ettiren şeyi seçmek tamamen size bağlıdır. Ama benim gibi ön uç için başka bir şablon motoru kullanacaksanız, her iki taraf için de aynı şeyi kullanmanız daha iyi

Güncelleme 16 Aralık 2013: Son zamanlarda, EJS'den Swig'e (Python dünyasındaki Jinja2 ile benzer bir konsepte sahip) geçtim. Bunun ana nedeni, EJS'nin yardımıyla bile blok eksikliğidir ejs-locals. Swig ayrıca şablonlar için düz HTML ve bir şablon motorunun sahip olması gereken birçok harika özellik kullanıyor, örneğin EJS'nin sahip olmadığı filtreler ve etiketler


1
Hangi seviyede olduğunuzu bilmemekle ilgili olarak, jade'in tek bir satırda birden fazla etiket için yeni desteği olduğunu belirtmek gerekir. Jade'in belgelerinden, 'Yer kazanmak için jade, iç içe geçmiş etiketler için bir satır içi sözdizimi sağlar .'a: img', '<a> <img /> </a>' ile eşdeğerdir.
Verdi Erel Ergün

1
Bir Jadeiki yıl önce denedim . Belki şimdi daha iyi hale geliyor. Ancak ilk noktamı yeniden değerlendirirsem, bunu aşmak kolay olmayacak
Tan Nguyen

1
Html2jade'i gördünüz ?
beatgammit

4
Sana o aracı ben yaptım, ama yine de tasarımcı bana her bir şey verdiğinde, dönüşüm yapmam gerekiyor (bu sinir bozucu)
Tan Nguyen

1
Bu kullanım durumu için üçlü sözdizimini kullanabileceğinizi (koşullarla ilgili ilk noktanıza göre) not etmek istedim. Şu yığın taşması sorusuna bakın: stackoverflow.com/questions/9488029/…
Rob Gibbons

43

Birinin diğerinden daha iyi olduğunu söyleyemem. Kesinlikle farklılar, ama "daha iyi" oldukça göreceli bir terim.

EJS'yi tercih ediyorum çünkü HTML'nin çok kötü olmadığını düşünüyorum, ayrıca Jade'i öğrenmek zorunda kalmadan başkalarıyla çalışmamı sağlıyor.

Bununla birlikte, Jade oldukça temiz ve görüşlerinizde bazı düzgün kodlar oluşturuyor.

Kendinizi daha rahat hissediyorsanız seçin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.