Jade と EJS、それぞれの長所と短所、およびそれぞれがどのような目的のために設計されているか?
他に優れた Express 互換のテンプレート エンジンはありますか? またその理由は?
Jade と EJS、それぞれの長所と短所、およびそれぞれがどのような目的のために設計されているか?
他に優れた Express 互換のテンプレート エンジンはありますか? またその理由は?
以前ジェイドを使っていました。Jade の優れた点は、構文が短いことです。これは、より速く入力できることを意味します。in Jade は非常に強力で、block
複雑な HTML コードを扱うときに大いに役立ちます。
一方、単純な if 条件に基づいてクラスを DIV に追加するなど、Jade でいくつかの単純なことを行うのは困難です。私はこのようなものを置く必要があります
- if (isAdmin)
div.admin.user
- else
div.user
また、ジェイドはタグと変数を区別しないため、コードが非常に混乱します(少なくとも私にとっては)
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 にはないフィルターやタグなど、テンプレート エンジンに必要な多くのクールな機能を使用しています。
どちらかが優れているとは言いません。確かに違いますが、「より良い」というのはかなり相対的な用語です。
私が EJS を好むのは、HTML はそれほど悪くないと思うからです。加えて、他の人が Jade を学ばなくても一緒に仕事ができるからです。
ただし、Jade はどちらかというとクリーンであり、ビュー内のいくつかのきちんとしたコードになります。
より快適に感じるものを選択してください。