Handlebars: Partials против помощников для шаблонов
Мы начинаем использовать Handlebars для слоя представления в некоторых наших проектах. Мы начинаем сталкиваться с двумя путями создания шаблонов. Я использую партиалы для обработки шаблонов и имею небольшие HTML-шаблоны, такие как:
<p id="{{name}}">
<label for="{{name}}Input">{{text}}</label>
{{#if info}}
<small>{{info}}</small>
{{/if}}
<textarea name="{{name}}" id="{{name}}Input"></textarea>
</p>
Другой разработчик считает, что мы не должны использовать партиалы для этого и вместо этого мы должны создавать помощников для этого.
Я вижу помощников, которые легче обрабатывают входные параметры (поскольку в настоящее время я использую некоторую форму помощника "include" для включения этих частичек с некоторыми дополнительными переменными). Но меня не устраивает то, что вы пишете HTML в строки в коде - я не думаю, что вы правильно разделяете ваши проблемы. Мы также используем Handlebars в Java (через [Handlebars.Java][2]), поэтому, опять же, ваш HTML в значительной степени находится в скомпилированном коде, а не в простом редактировании файлов представления.
Есть ли общепринятый способ обработки шаблонов в руле? Частичные или помощники или есть что-то еще, о чем я не знаю?
1 ответ
Ну, во-первых, вы должны понимать, что в handlebars.js партиалы сильно отличаются от handlebars.java.
В handlebars.js вы объявляете свои собственные партиалы и называете / называете их как хотите в своем контроллере (обычно), а затем вызываете их в своем представлении. В handlebars.java частичное определено в вашем представлении и, по сути, является просто включением, принимающим атрибут пути. Включения, как правило, являются неотъемлемой частью большинства проектов, и я не думаю, что есть какая-то польза от отбрасывания такой важной части функциональности.
Кроме того, я видел менталитет "использовать помощников для всего" во многих приложениях handlebars.js, и его очень сложно поддерживать очень быстро. Помощники - отличная функция, но их следует использовать с осторожностью. По возможности используйте встроенные помощники и попробуйте структурировать ваши данные так, чтобы вам не требовалась дополнительная абстрактная логика.
Глядя на ваш пример, я думаю, что это правильное использование частичного.