Как включить различные части содержимого в Assemble на основе контекста dev/build?
Я приступил к сборке/Grunt, чтобы попытаться улучшить свой рабочий процесс для создания шаблонов для CMS, которую я использую. Что я пытаюсь выяснить: возможно ли использовать блок / часть содержимого HTML в моем шаблоне во время разработки (т. Е. Во время "grunt watch"), но затем заменить это тегом include, который требуется моей 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>
который, если в режиме 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, помощника Assemble или задачи Grunt (аналогично grunt-usemin?)
1 ответ
Вы можете добавить флаг в ваши данные или собрать параметры и проверить значение этого флага в вашем 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
с любого уровня. Это было объединено, но еще не выпущено. Когда он выйдет, мы будем обновляться до этой версии.
Надеюсь это поможет.