回答:
以前ジェードを使いました。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に非常に近く、使用しているフロントエンドテンプレートエンジン(アンダースコアテンプレート)と同じ構文を使用します。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の世界ではJinja2と同様の概念を持つ)に切り替えました。主な理由は、を使用してもEJSにブロックがないことですejs-locals
。Swigはまた、テンプレートにプレーンHTMLを使用しており、テンプレートエンジンにはEJSにはないフィルタやタグなどの多くの優れた機能が必要です
Jade
1、2年前にやってみました。たぶん今は良くなっています。しかし、私の最初のポイントを格下げしても、それを回避するのは簡単ではありません