5

我已经开始使用assemble /Grunt 来尝试改进我的工作流程,以便为我使用的 CMS 创建模板。我想弄清楚的是:是否可以在开发时(即,在“grunt watch”期间)在我的模板中使用 HTML 内容的块/部分,然后用我的 CMS 在最终的 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>

如果在开发/监视模式下,将输出

<div id="content">
  <h1>Test Headline</h1>
  <p>This is just test content.</p>
</div<

但在构建模式下,会输出

<div id="content">
  <?php echo $mContext['bodyElements']; ?>
</div>

这是否可能,无论是使用 Handlebars 语法、Assemble 助手还是 Grunt 任务(类似于 grunt-usemin?)

4

1 回答 1

3

您可以在数据中添加标志或组合选项并在if语句中检查该标志的值:

Gruntfile.js

assemble: {
  options: {
    production: false
  },
  files: { ... }
}

页面.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从任何级别进行操作。这已被合并,但尚未发布。当它发布时,我们将更新到该版本。

希望这可以帮助。

于 2014-02-04T01:54:08.770 回答