# 代码片段
Handlebars 允许代码片段的复用。代码片段是一段普通的 Handlebars 模板,但它们可以直接由其他模板调用。
# 基本代码片段
一个代码片段必须通过 Handlebars.registerPartial
注册。
这个方法将注册代码片段 myPartial
。可以对代码片段进行预编译,并将预编译的模板传到第二个参数。
调用代码片段是通过「代码片段调用语法」完成的:
将渲染名为 myPartial
的代码片段。当代码片段执行时,它会在当前的代码块的上下文中运行。
# 动态代码片段
使用子表达式语法可以动态选择要执行的部分。
这将计算 whichPartial
,然后渲染以函数的返回值作为名称的代码片段。
子表达式不会解析变量,因此 whichPartial
必须是一个函数。如果代码片段的名称是储存在一个变量里面的,则可以通过 lookup
助手代码来解决它。
# 代码片段上下文
通过将上下文传递给代码片段,你可以在自定义上下文中执行代码片段。
# 代码片段参数
可以通过 Hash 参数将自定义数据传递到代码片段。
代码片段运行时会将参数设置为 value
。
这对于把数据从父级传递到代码片段的上下文中的时候特别有用:
# 代码片段代码块
一般来讲,尝试渲染一个未注册的代码片段会抛出错误。如果需要阻止错误抛出,可以在代码块中嵌套代码片段。
如果代码片段 myPartial
尚未注册,则 Failover content
将被渲染。
这种代码块的语法也可以用于将模板传递到代码片段中。有专门的代码片段执行此操作:@partial-block
。考虑如下模板:
layout
代码片段包含
这将渲染:
当以这种方式调用时,代码块将在 调用时代码片段中的上下文 中执行。此时深度路径查询和代码块参数是相对于代码片段的,而非 代码片段的模板。
这将渲染模板中的 person.firstname
而非代码片段。
# 内联代码片段
模板可以通过 inline
修饰符定义代码块范围之内的代码片段。
这将为每个 child 渲染 myPartial
。
每个内联代码片段均可用于当前代码块和所有子代码块(包括代码片段)。这使得「布局模板」和其他类似的功能成为可能:
其中 layout
可能是: