Hamlを試してみたかったのですが、時間がありませんでした。 しかし最近、新しいテンプレートエンジンを発見し、すぐに気に入った。 クリエイターによると、彼はジェイドとハムルから最高のものを取りました。 主なタスクは、コードの量を減らすことであり、怖くて理解しにくいものにすることではありません。
これは、Slimを使用したテンプレートの外観です。
doctype html html head title Slim Examples meta name="keywords" content="template language" body h1 Markup examples
Hamlと同様に、出力のフォーマットはインデントされます。 構成
<%=%>の代わりに、
=記号が使用されます。 htmlに出力のない計算(たとえば、
ifおよび
for )の場合、
-記号
が付けられます。
Hamlとは異なり、タグが割り当てられる%記号はありません。 そのまますぐに書くことができます。 基本的に、それは<>括弧のないHTMLであり、パディングを使用してネストされた要素を示します。 ところで、インデントの数はあなたの選択ですが、1つ以上ではありません。
すべての演算子のリスト:
| , . "" . ' , . - Haml, , , <% ... %> = <%= ... %>, html =' , . == , " ", escape_html ==' , , . / . html . /! html (<!-- -->), .
属性とコメント
次のようにidとクラスを指定できます。
blockquote id="quote-#{@quote.id}" class="quote" p class="title" = @quote.title p style="padding:1em;" = @quote.body
Hamlとの比較:
%blockquote{:id => "quote-#{@quote.id}", :class => "quote"} %p{:class="title"}= @quote.title %p{:style => "padding:1em;"}= @quote.body
Slimでは、いくつかの構文オプションも使用できます。
/ . , , Haml' #nav.top div id="nav" class="top" / h1 class=page_header_class = page_header h1{class=page_header_class} = page_header h1[class=page_header_class] = page_header h1(class=page_header_class) = page_header
もう1つの良い点は、属性に引用符が含まれていない場合、変数が使用されることです。 上記の数行の例から、変数
page_header_classが使用されていることがわかります。
関数がfalseを返す場合、属性はhtmlに表示されません(Hamlの場合):
option value="Slim" selected=option_selected?("Slim")
Rubyの文字列のように補間を使用できます。
body h1 ,
コメントの仕組みがとても気に入っています。 コメントアウトするコードブロックがある場合は、1行追加するだけで、ブロック全体に影響します。
renderメソッドはデフォルトで出力をフィルタリングするので、escape_htmlが2回動作しないように、その前に二重等号を置く必要があることを考慮する価値があります。
ロジックレスモード
Slim::Engine.set_default_options :sections => true
そして、それを使ってできることは次のとおりです。
/ false empty?, h1 - article h1 = title
/ , article false empty? -! article p
おそらく、最初の例を読んだ後に質問があります-変数 'title'はどこから来たのでしょうか? スリム自身はいくつかの方法で彼女を見つけようとします。
/ If article.respond_to?(:title) - article / article.send(:title) h1 = title
/ If article.respond_to?(:has_key?) and article.has_key?(:title) - article / article[:title] h1 = title
/ If article.instance_variable_defined?(@title) - article / article.instance_variable_get @title h1 = title
個人的には、私はこのモードが好きではありませんでしたが、多分あなたはそれを好きになるでしょう。
パフォーマンスはどうですか
レール内のテンプレートはキャッシュされるため、最初にアクセスされた場合にのみ、標準のErbよりも速度が遅くなります。 以下は、Slimがアプリケーションのボトルネックにならないことを示す比較チャートです。
インストール方法
2つのオプションがあります。 最初-テンプレートジェネレーターを追加せず(たとえば、足場を作成するため)。 第二-ジェネレーター付き。
次に、選択したgemをインストールする
ために、コンソールに
バンドルインストールを登録する必要があります。
Slimを使用するには、ファイルの拡張子が
.slimでなければならないことを忘れないでください。 つまり、
index.html.erbファイルはErbテンプレートエンジンによって実行され、
index.html.slimファイルはそれぞれスリムになります。
便利なリンク
slim -
lang.com-公式ページ
github.com/stonean/slim-Githubのページ
github.com/fredwu/haml2slim-HamlからSlimへのコンバーター
github.com/fredwu/ruby-slim-tmbundle-TextMateのバンドル
github.com/bbommarito/vim-slim-Vimのファイル