我正在尝试在我的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
和虚构类BEMBlockBuilder
与方法#element
(其中的一个实例是如b
传递)被定义,并且假设current_user.unregistered?
是我们应该得到如下的HTML输出:
<div class="user-bar user-bar--unregistered">
<div class="user-bar__inner">
You are not registered.
</div>
</div>
这种技术应该可以使设置块,元素并对它们应用修饰符,而不必每次都重复块的名称,并且它可以简单地基于绑定到它们的值来应用修饰符,这就是truthy。
该技术本身与使用form_for
助手时发生的情况有些类似,因为它将FormBuilder
的实例传递给该块。
这种技术和form_for
助手之间的主要差别是,你可能最终使用嵌套块的多个渲染的图,其中的输出可能是未知的。
此技术是否会影响Rails(或HAML)以否定方式执行缓存的能力,还是会损害整体渲染性能?
如果你的助手是纯函数 - 它不应该,因为函数的结果是可预测的。但一切都取决于你使用的助手的内部逻辑。在某些情况下,这可能是一个麻烦。 –