我跳进assemble / Grunt尝试改进我为我使用的CMS创建模板的工作流程。我想弄清楚的是:是否可以在开发时(即在“grunt watch”期间)在我的模板中使用块/部分HTML内容,但是然后用我在CMS中需要的include标记替换它最终的HTML输出(即当我做“grunt build”时)。像下面这样的东西?
<div id="content">
{{! if in dev context, include this partial }}
{{#if}}
{{> body }}
{{! if in build context, include this partial }}
{{else}}
{{> body-cms-tag }}
{{/if}}
</div>
如果在dev / watch模式下,将输出
<div id="content">
<h1>Test Headline</h1>
<p>This is just test content.</p>
</div<
但在构建模式下,会输出
<div id="content">
<?php echo $mContext['bodyElements']; ?>
</div>
这可能是使用Handlebars语法,汇编助手还是Grunt任务(类似于grunt-usemin?)
答案 0 :(得分:3)
您可以在数据或汇编选项中添加标记,并在if
语句中检查该标记的值:
Gruntfile.js
assemble: {
options: {
production: false
},
files: { ... }
}
page.hbs
<div id="content">
{{! if in dev context, include this partial }}
{{#if production}}
{{> body }}
{{! if in build context, include this partial }}
{{else}}
{{> body-cms-tag }}
{{/if}}
</div>
目前,如果你想在某个帮助器中找到production
标志,或者想要改变上下文级别的部分,你将不得不使用类似../production
的东西,这可能很痛苦。但是,Handlebars.js有一个版本(希望很快)的功能,可以让你从任何级别@root.production
。这已合并,但尚未发布。当它发布时,我们将更新到该版本。
希望这有帮助。