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, и его очень сложно поддерживать очень быстро. Помощники - отличная функция, но их следует использовать с осторожностью. По возможности используйте встроенные помощники и попробуйте структурировать ваши данные так, чтобы вам не требовалась дополнительная абстрактная логика.

Глядя на ваш пример, я думаю, что это правильное использование частичного.

Другие вопросы по тегам