Да, прекомпиляция ваших шаблонов может быть хорошей идеей. Причина заключается в том, что с помощью шаблона, как правило, состоит из двух этапов:
- Синтаксического
- Генерации строки из данных и проанализированного шаблона
Parsing является дорогостоящей операцией. Он состоит в основном из идентификационных токенов (специальных слов) и построения древовидной структуры. Например:
{{#with author}}
<h2>By {{firstName}} {{lastName}}</h2>
{{/with}}
Этот блок можно рассматривать в виде дерева с заявлением родителя with
и нескольких детей "<h2>By "
, firstname
, lastName
и "</h2>"
.
Когда вы прекомпилируете шаблон, то, что вы делаете, генерирует код, являющийся результатом разбора и генерации этой древовидной структуры, поэтому каждый раз, когда вы используете этот код, вам не нужно разбирать и генерировать дерево. Вы сохраняете много циклов процессора.
Логика аналогична тому, как вы должны читать некоторые файлы синхронно при запуске своего сервера или читать их каждый раз. Если вы сначала читаете файлы шаблонов, вы делаете меньше операций ввода-вывода, но вы используете больше памяти для хранения содержимого этих шаблонов. То же самое касается разбора.
Что многие из нас делают, это определить, какие активы будут использоваться много (шаблоны обычно относятся к этой категории), кэшировать их в памяти и оставлять остальные для чтения по требованию. Это означает, что вы не можете просто изменить шаблон и обновить свой сайт. Вам нужно обновить свой сайт и, чтобы выполнить обновление, вам нужно убить процесс узла и перезапустить его. Будет ли это хорошей идеей для вашего сайта, будет зависеть от того, как вы организуете развертывания.
Что касается сочетания Jade и Handlebars, это не похоже на хорошую идею, потому что более дорогостоящая операция состоит в том, чтобы визуализировать два разных шаблона и потому, что вы можете предварительно прекомпилировать один из них. Вы не можете предварительно скомпилировать оба из них, потому что один шаблон зависит от результата другого. В вашем случае «исходный код» для шаблона Jade зависит от результата применения шаблона Handlebars.
Jade считается замедленным для некоторых, однако на этот вопрос трудно ответить на любой вопрос. Я предлагаю вам построить тест для конкретного случая и проверить результаты. (Например, количество одновременных подключений на загрузку сервера). Как правило, всегда стоит составлять ваши шаблоны, если вы в состоянии. –