10 Модуль - Библиотеки. Шаблонизация. JSON. WebStorage -- 02 Шаблонизация Flashcards
Шаблонизация (templating) —
генерации HTML по шаблону.
Использование шаблонизации требует нескольких простых шагов:
- Наличие данных которыми будет наполнятся элемент интерфейса
- Шаблон по которому будет составлена разметка элемента
- Библиотека которая предоставляет средства шаблонизации
Шаблон — это
строка в специальном формате, которая путём подстановки значений превращается в HTML.
Внешние шаблоны имеют много преимуществ, главным образом в том, что
шаблоны никогда не будут загружаться клиенту, если они не нужны на странице.
Методы хранения Шаблону ему не место в файле скриптов. Один из способов — записать его это в
в HTML-файле, в тег template.
Подключение библиотеки в проект происходит очень просто. Есть несколько вариантов.
- Скачать файл библиотеки и подключить его в index.html
- Использовать CDN-сервис для получения ссыки на файл библиотеки
- Если используется инструмент вроде Webpack, можно ставить библиотеку как npm-пакет
У нас уже есть библиотека и шаблон из которого мы изъяли текстовый контент. Для работы с шаблоном в библиотеке Handlebars есть функция
compile. Эта функция запускает компиляцию шаблона source и возвращает результат в виде функции, которую далее можно запустить с данными и получить строку-результат.
Handlebars.compile(source)
Вызов Handlebars.compile(source) разбивает
HTML-строку по разделителям и, при помощи new Function создаёт на её основе функцию.
Теперь используя функцию-шаблон template можем
Следующим шагом будет вызвать функцию-шаблон и передать ей menuData как аргумент. В результате получим строку с подставлеными значениями, поместим ее в тег и браузер, распарсив ее, создаст HTML-разметку.
Шаблоны и Webpack:
Чтобы настроить Webpack на работу с библиотекой Handlebars нужно:
-- Добавляем библиотеку: npm install handlebars -- Добавляем загрузчик handlebars-loader. npm install --save-dev handlebars-loader -- Обновляем конфигурацию Webpack, добавляя настройки загрузчика. { ... module: { rules: [ ... { test: /\.hbs$/, exclude: /node_modules/, use: "handlebars-loader" } ] } }
Шаблоны и Webpack:
В папке src создаем папку templates, в которой добавляем файлы шаблонов с расширением
.hbs. Для нашего меню это будет menu.hbs. Помещаем разметку шаблона в файл, без тега tempalte.
Шаблоны и Webpack:
Там где хотим использовать шаблон,
импортируем файл с шаблоном. Особенность в том, что при импорте, handlebars-loader обработает файл шаблона и в menuTemplate уже будет лежать скомпилированная функция-шаблон готовая к использованию.
import menuTemplate from ‘/path/to/templates/menu.hbs’;
const menuData = {
title: ‘Eat it createElement, templates rule!’,
items: [‘Handlebars’, ‘LoDash’, ‘Pug’, ‘EJS’, ‘lit-html’],
};
const markup = menuTempalte(menuData); // html разметка с подставленным значениями