Spec-Zone.ru › Handlebars.js

Предварительная компиляция

Используя предварительный компилятор Handlebars, вы можете предварительно скомпилировать свои шаблоны Handlebars, чтобы сэкономить время на клиенте и уменьшить необходимый размер библиотеки handlebars во время выполнения.

Начало работы

Сначала вам нужно установить node и npm. В ОС X:
$ brew install node
Предполагается, что у вас уже установлен Homebrew. Если нет, установите его сначала.
Далее, установите пакет npm Handlebars.
$ npm install handlebars -g
Использование флага -g устанавливает пакет глобально, так что он может использоваться в любом проекте.
Теперь вы готовы использовать предварительный компилятор:
$ handlebars <input> -f <output>
Компилятор вставит шаблоны в Handlebars.templates. Если ваш входной файл person.handlebars, компилятор вставит его в Handlebars.templates.person. Этот шаблон будет функцией, которую можно непосредственно выполнить так же, как и шаблоны, скомпилированные локально. То есть,
Handlebars.templates.person(context, options);
Если вы работаете со скомпилированными шаблонами, вам не нужно поставлять компилятор с вашим развернутым приложением. Вместо этого вы можете использовать более компактную «runtime» сборку.
<script src="/libs/handlebars.runtime.js"></script>
Помимо уменьшения размера загрузки, исключение компиляции на стороне клиента значительно ускорит время запуска, так как компиляция является самой дорогой частью Handlebars.

Оптимизации

Поскольку вы предварительно компилируете шаблоны, вы также можете применить несколько оптимизаций к компилятору. Первая позволяет указать список известных помощников компилятору
handlebars <input> -f <output> -k each -k if -k unless
Компилятор Handlebars оптимизирует доступ к этим помощникам для повышения производительности.
Когда все помощники известны во время компиляции, опция --knownOnly обеспечивает наименьший сгенерированный код, который также обеспечивает самую быструю работу.

Использование

Usage: node ./bin/handlebars [template|directory]...

Options:
  -f, --output         Output File
  --map                Source Map File                                                    [string]  [default: undefined]
  -a, --amd            Exports amd style (require.js)
  -c, --commonjs       Exports CommonJS style, path to Handlebars module                                 [default: null]
  -h, --handlebarPath  Path to handlebar.js (only valid for amd-style)                                     [default: ""]
  -k, --known          Known helpers
  -o, --knownOnly      Known helpers only
  -m, --min            Minimize output
  -n, --namespace      Template namespace                                              [default: "Handlebars.templates"]
  -s, --simple         Output template function only.
  -N, --name           Name of passed string templates. Optional if running in a simple mode. Required when operating
                       on multiple templates.
  -i, --string         Generates a template from the passed CLI argument.
                       "-" is treated as a special value and causes stdin to be read for the template value.
  -r, --root           Template root. Base value that will be stripped from template names.
  -p, --partial        Compiling a partial template
  -d, --data           Include data when compiling
  -e, --extension      Template extension.                                                       [default: "handlebars"]
  -b, --bom            Removes the BOM (Byte Order Mark) from the beginning of the templates.
  -v, --version        Prints the current compiler version
  --help               Outputs this message
Если используется обычный режим предварительного компилятора, результирующие шаблоны будут сохранены в объекте Handlebars.templates с использованием относительного имени шаблона без расширения. Эти шаблоны можно выполнить так же, как и шаблоны.
Если используется упрощенный режим, предварительный компилятор сгенерирует один javascript метод. Для выполнения этого метода он должен быть передан методу Handlebars.template, и полученный объект может использоваться как обычно.

Предварительная компиляция шаблонов внутри NodeJS

Если вы хотите предварительно скомпилировать шаблоны изнутри NodeJS — без вызова «handlebars» из командной строки — это можно сделать с помощью Handlebars.precompile. Передайте строковый результат этой функции своим клиентам, и они, в свою очередь, смогут обработать его с помощью Handlebars.template.
var template = "<div>whatever {{ name }}</div>";
var Handlebars = require("handlebars");
var compiled = Handlebars.precompile(template);
На стороне клиента у вас есть JavaScript, подобный следующему.
var template = Handlebars.template, templates = Handlebars.templates = Handlebars.templates || {};

Handlebars.partials["test1"] = template({"compiler":[7,">= 4.0.0"],"main":function(container,depth0,helpers,partials,data) {
  var helper;

  return "<div>whatever "
  + container.escapeExpression(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"name","hash":{},"data":data}) : helper)))
  + "</div>";
},"useData":true});
Наконец, вы можете динамически ссылаться на эти шаблоны в своем JavaScript.
var result = Handlebars.partials["test1"]({name : "yourname"});
//do whatever you want with the result

© 2011–2017 by Yehuda Katz
Licensed under the MIT License.
https://handlebarsjs.com/precompilation.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API