121

Jade と EJS、それぞれの長所と短所、およびそれぞれがどのような目的のために設計されているか?

他に優れた Express 互換のテンプレート エンジンはありますか? またその理由は?

4

2 に答える 2

181

以前ジェイドを使っていました。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 にはないフィルターやタグなど、テンプレート エンジンに必要な多くのクールな機能を使用しています。

于 2013-05-13T01:35:51.777 に答える
45

どちらかが優れているとは言いません。確かに違いますが、「より良い」というのはかなり相対的な用語です。

私が EJS を好むのは、HTML はそれほど悪くないと思うからです。加えて、他の人が Jade を学ばなくても一緒に仕事ができるからです。

ただし、Jade はどちらかというとクリーンであり、ビュー内のいくつかのきちんとしたコードになります。

より快適に感じるものを選択してください。

于 2013-05-13T01:38:25.663 に答える