Rails 4 アプリにBEMヘルパーを実装して、ビューをより快適に記述できるように実験しています。
次のHamlビューがあるとします。
= block :user_bar, unregistered: current_user.unregistered? do |b|
- if current_user.unregistered?
= b.element :inner do
You are not registered.
とメソッドを持つblock
架空のクラス(インスタンスが として渡される) が定義されていると仮定し、がであると仮定すると、次の HTML 出力が得られるはずです。BEMBlockBuilder
#element
b
current_user.unregistered?
true
<div class="user-bar user-bar--unregistered">
<div class="user-bar__inner">
You are not registered.
</div>
</div>
この手法により、ブロック、要素を設定し、ブロックの名前を毎回繰り返すことなくそれらに修飾子を適用できるようになり、それらにバインドされた値が真実であることに基づいて修飾子を適用できるようになります。
テクニック自体は、ブロックにform_for
のインスタンスを渡すという点で、ヘルパーを使用するときに起こることと多少似ています。FormBuilder
この手法とヘルパーの主な違いはform_for
、多数のネストされたブロックを使用してビューをレンダリングすることになり、その出力が不明になる可能性があることです。
この手法は、Rails (または HAML) のキャッシング機能に悪影響を及ぼしますか?それとも、一般的にレンダリング パフォーマンスに悪影響を及ぼしますか?