SlimとERB
SlimはHTMLテンプレートエンジンの一つです。テンプレートエンジンとは、テンプレートファイルにデータを当て込んで、動的にドキュメントを出力する仕組みです。
本記事のテーマはSlimですが、まずテンプレートエンジンの先輩格である「ERB」について説明させてください。
Ruby界隈では、長らくERBというテンプレートエンジンが使われてきました。今でもRubyビルトインライブラリに含まれています。
ERBは<% %>
あるいは<%= %>
というタグの中にRubyコードを埋め込むことでドキュメントを動的にレンダリングします。以前の記事RailsでTwitterクローンを作る(2) -- 画面レイアウトを整えるで作成したRailsのViewから抽出した、以下の例を見てもらったほうがわかりやすいでしょう。投稿一覧(@posts
)をtableの中に1行1行表示していく部分です。
ちなみに、<% %>
にはif文やeachなどHTMLに出力されない制御構造を書き、<%= %>
で評価したRuby式はHTMLに出力されます。Rails等のWebアプリケーションで使った場合は、上のERBファイルにサーバ上でデータ(上の例で言うと@posts
インスタンス変数)が当て込まれ、生成されたHTMLがユーザのブラウザに送信されることになります。
見て分かる通り、ERBの利点は「ほぼ普通のHTMLであり、学習コストが低い」ことです。
そして、これをSlimで書くと以下のように表現されます。
ずいぶんとスッキリとして、同時に「タテに長く」なったと感じるのではないでしょうか。具体的に変わった点を挙げてみると、
- タグから
<>
がなくなっている - 閉じタグがない代わりに、Pythonのようにインデントで構造を表現している
<% %>
の代わりに-
、<%= %>
の代わりに=
でRuby式を書いている
といったところです。ERBと違って最初に文法を覚える必要はありますが、閉じタグやclass="..."
といった冗長な表現が排除されて"スリム"に書けるのがメリットです。
ちなみにHamlというテンプレートエンジンもSlimと同じくインデントで構造を表しますが、SlimはHamlよりも高速に描画されるのが利点です。
それでは、次のページでSlimの文法を紹介していきます。