Jade対EJS、それぞれの長所と短所、それぞれの目的は何ですか?
他のエクスプレス互換テンプレートエンジン はありますか?
前にジェイドを使いました。 Jadeの良いところは、構文が短く、より速く入力できることです。 Jadeのblock
は非常に強力で、複雑なHTMLコードを処理する際に非常に役立ちます。
一方、Jadeで簡単な操作を行うのは困難です。単純なif条件に基づいてDIVにクラスを追加するようなものです。私はこのようなものを置く必要があります
- if (isAdmin)
div.admin.user
- else
div.user
また、Jadeは、コードを非常に混乱させるタグと変数を区別しません(少なくとも私にとっては)
a(href='/user/' + user.id)= user.name
また、ジェイドはデザイナーに優しいものではありません。デザイナーの友人はしばしばHTMLとCSSをくれます(最近LESSに切り替えましたが、まだHTMLを使いたいです)。そのため、Jadeを使用する場合はHTMLをJadeに変換する必要があります。また、Jadeではインデントを使用する必要があるため、HTML構造が複雑になると、コードが恐ろしく見えます(特にテーブル)。時々、自分のレベルがわからないこともあります
table
thead
tr
td
a
img
tr
td
tbody
tr
td
最近、私はEJSに切り替えましたが、これまでのところ満足しています。純粋なHTMLに非常に近く、使用しているフロントエンドテンプレートエンジン(Underscoreテンプレート)と同じ構文を使用します。 EJSの方がすべて簡単だと言わなければなりません。デザイナーの友人からHTMLテンプレートを受け取るときに、すべての変換を行う必要はありません。ダイナミックパーツをExpressJSから渡された変数に置き換えるだけです。 Jadeを使用するときに私を夢中にさせるものはEJSで解決されます
<div class="<%= isAdmin? 'admin': '' %> user"></div>
そして、私はEJSが何であるかを知ることができます
<a href="/user/<%= user.id %>"><%= user.name %></a>
Jade(私のような)の短い構文を見逃した場合は、Zen-CodingとEJSを組み合わせることができます。これにより、一般的な進捗をスピードアップできます。パフォーマンスについては、違いはありません
ただし、EJSはJadeほど強力ではなく、デフォルトではブロックがありません(この男はEJSのブロック機能を実装しました https://github.com/RandomEtc/ejs-locals )
だから、あなたが快適にするものを選ぶのはあなた次第です。しかし、私のようなフロントエンドに別のテンプレートエンジンを使用する場合は、両側に同じものを使用する方が良いでしょう
更新2013年12月16日:最近、私はEJSからSwig(Python worldのJinja2と同様の概念を持っています)に切り替えました。主な理由は、ejs-locals
の助けを借りてもEJSにブロックがないことです。 Swigは、テンプレートにプレーンHTMLを使用しており、テンプレートエンジンにはEJSにはないフィルターやタグなどの多くのクールな機能も使用しています
一方が他方より優れているとは言いません。確かに違いますが、「より良い」というのはかなり相対的な用語です。
HTMLはそれほど悪くないと思うのでEJSが好きです。さらに、Jadeを学ばなくても他の人と仕事をすることができます。
ただし、Jadeはかなりクリーンで、ビューに適切なコードを作成します。
あなたがより快適に感じるものは何でも選んでください。