#javascript #php #handlebars.js
#javascript #php #handlebars.js
Вопрос:
У меня есть серверная часть php, которая создает динамический сайт с шаблонами handlebars. Сайт должен поддерживать локализацию пользовательского интерфейса по предпочтениям пользователя (на сайте есть аутентификация пользователей с настройками пользовательского интерфейса для них). Теперь все шаблоны handlebars, созданные процессором php, например:
{{!-- Template for dispatch table --}}
<table id="records" class="table-data">
<caption>
<h3>
<div class="column-right"><span class="icon-clock"></span><span id="clock"></span></div>
<div><span class="icon-database"></span><?php echo _('Records in the order for dispatching.'); ?></div>
<div class="clear"></div>
</h3>
</caption>
<thead>
<tr>
<th colspan="2"><span class="icon-database"></span><?php echo _('Name'); ?></th>
<th><span class="icon-clock"></span><?php echo _('Record Date'); ?></th>
<th><span class="icon-user"></span><?php echo _('Client'); ?></th>
<th><span class="icon-pencil"></span><?php echo _('Conclusion'); ?></th>
<th><span class="icon-doc"></span><?php echo _('Status'); ?></th>
<th><span class="icon-doc-text"></span><?php echo _('Doctor'); ?></th>
<th><span class="icon-code"></span><?php echo _('Type'); ?></th>
</tr>
</thead>
<tbody>
{{#each records}}
.................
{{/each}}
</tbody>
</table>
И это не круто:( Слишком много <?php echo ... ?>
в шаблоне.
Может быть, есть какое-то решение этой проблемы?
PS: Шаблон, созданный на серверной части, но скомпилированный и работающий на стороне пользователя.
ОБНОВЛЕНИЕ: я хочу сократить работу, выполняемую серверной частью. Лучшее решение для меня — преобразовать динамический шаблон hbs в набор статики (по одному для поддерживаемой локализации). Для этой цели я хочу скомпилировать шаблон так, чтобы все <?php echo _('...'); ?>
операторы были преобразованы в локальные строки. Но я не знаю, как это сделать.
Комментарии:
1. в чем именно проблема??
2. @Джефф, я хочу сократить работу, выполняемую сервером.
Ответ №1:
Чтобы избежать использования echo
оператора, вы можете использовать механизм шаблонов Php, такой как Smarty. Таким образом, вместо использования echo
вы будете компилировать свой шаблон, уже написанный в HTML-файле. Этот HTML-файл также будет содержать директиву handlebars, поэтому он будет скомпилирован на стороне пользователя. Но на данный момент, почему бы вам не использовать только движок шаблонов Php?Это зависит от вас . . .
Комментарии:
1. Шаблоны PHP будут работать быстрее, чем
echo
инструкции в сгенерированных hbs? Могу ли я предварительно скомпилировать эти шаблоны для всех языков?2. Вы можете предварительно скомпилировать шаблоны любым удобным для вас способом, что касается производительности, использование движка всегда будет медленнее, чем необработанный код, но у вас есть преимущества отдельных проблем и, следовательно, лучшего обслуживания.