Node.jsテンプレートのJadeとEJSの両方の長所と短所は何ですか?[閉まっている]


118

ジェイド対EJS、それぞれの長所と短所は何ですか?それぞれの目的は何のために設計されていますか?

そこにある他の速達互換のテンプレートエンジンは良いとなぜですか?

回答:


178

以前ジェードを使いました。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にはないフィルタやタグなどの多くの優れた機能が必要です


1
自分がどのレベルにいるかわからないことに関して、jadeは1行の複数のタグを新たにサポートしていることに注意してください。Jadeのドキュメントの「スペースを節約するために、jadeはネストされたタグのインライン構文を提供します。a:img」は「<a> <img /> </a>」と同等です。
Verdi ErelErgün

1
Jade1、2年前にやってみました。たぶん今は良くなっています。しかし、私の最初のポイントを格下げしても、それを回避するのは簡単ではありません
Tan Nguyen

1
html2jadeを見たことがありますか?
ビートギャミット

4
私はあなたにそのツールをやったが、それでもデザイナーが私に何かを与えるたびに、私は変換を行う必要がある(それは面倒です)
Tan Nguyen

1
(条件についての最初のポイントに関して)このユースケースで3項構文を使用できる場合があることに注意したいと思います。このスタックオーバーフローの質問を参照してください:stackoverflow.com/questions/9488029/…–
Rob Gibbons

43

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

HTMLはそれほど悪くないと思うので、私はEJSを好みます。さらに、Jadeを学ぶ必要なしに他の人と作業することができます。

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.