enb-bemxjst
Пакет предоставляет набор ENB-технологий для сборки BEMHTML-шаблонов в проектах, построенных по методологии БЭМ.
Технологии пакета enb-bemxjst
:
Принципы работы технологий и их API описаны в документе API технологий.
Совместимость: технологии пакета enb-bemxjst
используют компилятор BEM-XJST версии 4.2.3
.
Установка
Установите пакет enb-bemxjst
:
$ npm install --save-dev enb-bemxjst
Требования: зависимость от пакета enb
версии 0.16.0
и выше.
Обзор документа
Быстрый старт
Подключите технологию bemhtml.
var BemhtmlTech = FileProvideTech = bemTechs = ; module { config; };
Для сборки HTML используйте технологию bemjson-to-html.
var BemjsonToHtmlTech = BemhtmlTech = FileProvideTech = bemTechs = ; module { config;};
Работа с технологиями
По БЭМ-методологии шаблоны к каждому блоку хранятся в отдельных файлах с расширением .bemhtml.js
в директориях блоков. Чтобы использовать шаблоны, необходимо собрать их исходные файлы.
Отдельные файлы с шаблонами собираются в один общий файл (?.bemhtml.js
) с помощью технологии bemhtml.
Результат — скомпилированный файл ?.bemhtml.js
— может применяться по-разному в зависимости от наличия модульной системы и ее типа в следующих случаях:
Исполнение шаблонов в Node.js
Скомпилированный файл подключается как модуль в формате CommonJS.
var BEMHTML = BEMHTML; // Путь до скомпилированного BEMHTML-файла BEMHTML; // <html>...</html>
Исполнение шаблонов в браузере
Скомпилированный файл подключается на страницу как JavaScript-файл.
В браузере способы исполнения шаблонов зависят от наличия модульной системы:
-
Без модульной системы
Шаблоны доступны из глобальной переменной
BEMHTML
.BEMHTML; // <html>...</html> -
С модульной системой YModules
Шаблоны доступны из модульной системы (YModules):
modules;
Использование шаблонов для сборки HTML
HTML – результат применения скомпилированного шаблона к указанному BEMJSON-файлу.
Сборка HTML (файл ?.html
) с помощью технологий enb-bemxjst
проходит в два этапа:
- Файл
?.bemhtml.js
собирается с помощью технологии bemhtml. - BEMJSON и скомпилированный
?.bemhtml.js-файл
обрабатываются с помощью технологии bemjson-to-html, которая возвращает HTML-файл (?.html
).
Особенности работы пакета
Подключение сторонних библиотек
Технология bemhtml поддерживают возможность подключения сторонних библиотек как глобально, так и для разных модульных систем с помощью опции requires.
Для подключения укажите название библиотеки и в зависимости от используемой модульной системы:
- имя глобальной переменной;
- имя модуля из YModules;
- путь к модулю для CommonJS.
requires: 'lib-name': globals: 'libName' // Название переменной в глобальной видимости ym: 'lib-name' // Имя модуля из YModules commonJS: 'path/to/lib-name' // Путь к модулю CommonJS относительно собираемого файла
В шаблонах модули будут доступны с помощью метода this.require
, например:
content { var lib = this; return lib;};
Не обязательно указывать все модульные системы для подключения библиотеки.
Например, можно указать зависимости глобально. В этом случае модуль всегда будет передаваться из глобальной переменной, даже если в среде исполнения будет модульная система.
requires: 'lib-name': globals: 'dependName' // Название переменной в глобальной видимости
Пример подключения библиотеки moment
Указывается путь к модулю:
requires: moment: commonJS: 'moment' // Путь к модулю CommonJS относительно собираемого файла
В шаблонах модуль будет доступен с помощью метода this.require('moment')
. Код шаблона пишется один раз, одинаково для исполнения в браузере и в Node.js
:
content { var moment = this // Библиотека `moment` // Время в миллисекундах, полученное с сервера return ;};
Синтаксис
Существует два синтаксиса для BEMHTML-шаблонов:
С момента выпуска библиотеки bem-core сокращенный синтаксис шаблонов считается устаревшим и больше не поддерживается.
О правилах перехода на JS-синтаксис читайте в руководстве по миграции.
Интернационализация
Базовая реализация BEM-XJST-технологий не содержит шаблонов для интернационализации (i18n).
Чтобы использовать i18n в шаблонах, следует подключить модуль BEM.I18N
по аналогии с другими сторонними библиотеками.
BEM.I18N
— библиотека для интернационализации блоков. Ядро находится вkeyset
-файлах в одной из базовых библиотек блоков:
После подключения BEM.I18N
библиотека будет доступна в шаблонах с помощью метода this.require
:
content { var i18n = this // Библиотека `BEM.I18N` // Локализованное значение для ключа `tooltip` return ;};
Дополнительная документация
- API технологий
- Быстрый старт по BEMHTML
- Описание шаблонизатора и его преимуществ
- Справочное руководство по шаблонизатору BEMHTML
- Справочное руководство по BEMJSON
- JS-синтаксис
Лицензия
© 2013 YANDEX LLC. Код лицензирован Mozilla Public License 2.0.