我正在尝试在我的 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)以负面方式执行缓存的能力,还是会损害总体渲染性能?