2014-02-03 17 views
5

Я прыгнул в assemble/Grunt, чтобы попытаться улучшить мой рабочий процесс для создания шаблонов для используемой мной CMS. То, что я пытаюсь выяснить: возможно ли использовать блок/частичный контент HTML в моем шаблоне во время разработки (т. Е. Во время «ворчащих часов»), но затем заменить его тегом include, который требуется моей CMS в окончательный вывод HTML (т. е. когда я делаю «grunt build»). Что-то вроде следующего?Как включить различные частичные части контента с помощью сборки на основе контекста dev/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 режиме/часов, что выход

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

, но в режиме сборки, будет выводить

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

Это возможно, либо с синтаксисом Рули, Собирают помощника , или задача Grunt (аналогично grunt-usemin?)

ответ

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 с любого уровня. Это было объединено, но пока не выпущено. Когда он будет выпущен, мы будем обновляться до этой версии.

Надеюсь, это поможет.

+0

в v0.5.0 может ли хелпер использоваться для частичного макета/тела? Я рассмотрю несколько, если это так, это еще один вариант ... условный помощник, который отображает параметр A в режиме dev или param B, когда он находится в prod. – jonschlinkert

+0

Спасибо за помощь, ребята - похоже, что я был почти там, просто нужен этот недостающий флаг в файле grunt - имеет смысл ... ура! – michaelroper

+1

, которому все еще нужно, чтобы я не забыл установить флажок options.production в true, как только я выпущу, не так ли? Есть ли способ автоматически запускать флаг производства при запуске 'grunt', но при запуске' grunt watch' флаг выключен? – hansaplast

 Смежные вопросы

  • Нет связанных вопросов^_^