109

私はRailsを学んでいて、これらのテンプレートエンジンを見てきました。私はそれらの経験がありません(erbのみ)。

しかし、私は初心者なので、本当に混乱しています。どれを提案しますか、そしてその理由は何ですか?Erb、Haml、またはSlim?どちらかを優先する理由を教えてください。また、他に推奨事項がある場合は、お知らせください。

編集:私はここで勝者を探していません。それら、構文、実行速度などについてのご意見をお聞かせください。

4

5 に答える 5

88

hamlよりもスリムを使用することの2つの大きな利点:

  1. Slimは現在hamlより約8倍高速です。

  2. SlimはHTTPストリーミングをサポートしていますが、HAMLはサポートしていません。

  3. Slimの構文はより自然です。a href="foo.html"

于 2012-07-13T07:35:14.070 に答える
68

ERBは主に、プレーンHTMLで作業し、hamlまたはslimのどちらも知らないWebデザイナーがいる場合に適しています。このようにして、彼はHTMLを記述でき、適切なタグを使用してrubyロジックを埋め込むことができます。

HTMLとrubyロジックの両方で作業している場合、またはデザイナーが新しいこと(HAMLなど)を学ぶ準備ができている場合は、HAMLを選択します。これは、ERBよりもはるかにルビーフレンドリーで、文字数を大幅に削減し、はるかに読みやすくなっています。

例(公式HAMLサイトから取得):

ERBでは、ビューは次のようになります。

<div id="profile">
  <div class="left column">
    <div id="date"><%= print_date %></div>
    <div id="address"><%= current_user.address %></div>
  </div>
  <div class="right column">
    <div id="email"><%= current_user.email %></div>
    <div id="bio"><%= current_user.bio %></div>
  </div>
</div>

HAMLにいる間は、次のようになります。

#profile
  .left.column
    #date= print_date
    #address= current_user.address
  .right.column
    #email= current_user.email
    #bio= current_user.bio

ずっときれい!

HAMLとSLIMの違いについては、私はSLIMを実際に使用したことはありませんが、好みの問題だと思います。両方の構文を見て、どちらが見栄えがよいかを判断してください。この2つ(HAML / SLIM)の間に明確な勝者はいないと思います。

于 2012-07-09T07:17:44.253 に答える
36

頭のてっぺんからこれが私が思いついたものです

ERB

長所

  • 箱から出してデフォルト
  • 空白に依存しない
  • Rubyコードを含むHTMLが散在しているため、参入障壁が最も低くなります(HTMLからの場合)。
  • ほとんどのIDEのレクサーはデフォルトでそれを読み取ります
  • DHHはそれを好む
  • レガシーアプリはおそらくまだそれを使用しています

短所

  • より冗長
  • ヘルパーとビューのcontent_forタグは、すぐに手に負えなくなる可能性があります
  • content_forタグは、erbがブロックの最後の行のみを返すため、タグのネストを困難にします。したがって、文字列に追加してからそれを返す必要があります。

HAML

長所

  • より簡潔に。終了タグなし、小さい画面に収まります
  • 視覚的にきれいな構造
  • ヘルパーメソッドでhamlを利用するためのヘルパー(haml_concat、haml_capture)が組み込まれています
  • クラスチェーン
  • divや。の#のような便利なシンタックスシュガーがたくさん。クラスチェーンの場合、またはJSタグの場合は:javascript

短所

  • 空白に依存するため、いくつかの難しいエラーが発生することがあります
  • 複雑なタグは通常、「ハッシュ」形式に頼る必要があります。(実際、これは、始めたばかりの人にとっては柔軟性の良い例だと思いますが、それは苦痛かもしれません。)
  • 宝石として追加されました(これもまた、これを短所として置くためのストレッチです)
  • 設計者は調整に問題があるかもしれません
  • 一般的な空白の警告に加えて...単純な空白のエラー。インデント用のタブとスペースにより、通常の仕様/テストでは検出されない本番環境でのページのエラーが発生する可能性があります。道徳:テストがビューの実際のレンダリングをテストしていることが確実でない限り、ビューテストの必要性が高まることを期待し、ミッションクリティカルなビューにhamlを使用しないでください。
  • (erbより)遅い
    • 警告:これは私たちが話しているルビーコードです。アプリケーションで速度がブロックの問題である場合、ルビーに代わるものがあります。たとえば、haskell
于 2012-07-09T19:50:40.163 に答える
22

私にとっての質問は、%すべてのタグの前に置くのか、それとも|すべての新しいテキストブロックの前に置くのかということです。

スリム:

 tag(attr= "value")
  | text

Haml:

 %tag{attr: "value"}
   text

注意すべきもう1つのこと:hamlは新しい行の間に空白を想定し(hamlの空白を削除)、slimはスペースを想定しません(ここここにSlimの空白を追加)

于 2013-04-08T13:23:46.193 に答える
17

https://github.com/scalp42/hamlerbslim-独立したベンチマークであり、SlimとErbが勝者であり、パフォーマンスの面で優れています(SlimはHTML出力サイズも縮小する傾向があります)。

私の個人的な意見では、SlimとHamlは全体として、メンテナンスの面で時間(==お金)を節約し、Haml/Slimに精通した人々があなたの意見を世話してくれることを提供します。

それらの人々がいない場合、Erbは間違いなく行く方法です。なぜなら、世界で最高の意志にもかかわらず、HTML / Erbで作業できる非常に安価な人々がた​​くさんいるからですが、Haml/Slimは完全です。神秘。

何よりも、スリムを使用するか、少なくともスリムにさらすようにこれらの人々を訓練し、「それを手に入れる」人の数を維持します。

于 2013-01-10T05:58:33.147 に答える