Marionette.TemplateCache
Класс TemplateCache
предоставляет кэш для шаблонов, которые хранятся внутри тегов
script
вашей HTML-разметки. Класс позволяет увеличить скорость получения
шаблона при последующих обращениях к нему.
Содержание
- Основное применение
- Удаление записей из кэша
- Настройка способа доступа к шаблонам
- Переопределение способа получения шаблона
- Переопределение способа компиляции шаблонов
Основное применение
Нет необходимости самостоятельно создавать экземпляры класса TemplateCache
,
достаточно просто вызывать метод get
. TemplateCache
внутри себя создаст и будет
хранить новый экземпляр. Метод get
вернет скомпилированный шаблон в виде функции.
var template = Marionette.TemplateCache.get("#my-template", {some: options});
// использование шаблона
template({param1:'value1', paramN:'valueN'});
При первом обращении шаблон будет получен из DOM и сохранен в кэше. При последующих обращениях шаблон будет отдаваться уже из кэша.
Удаление записей из кэша
Вы можете удалить одну, несколько или все записи из кеша с помощью метода clear
.
Удаление шаблона из кэша приведет к принудительной перезагрузке его из DOM
(с помощью метода loadTemplate
, который можно переопределить, см. далее)
при следующем запросе шаблона.
Если метод clear
вызывается без параметров, то будут удалены все записи кэша шаблонов:
Marionette.TemplateCache.get("#my-template");
Marionette.TemplateCache.get("#this-template");
Marionette.TemplateCache.get("#that-template");
// удаление всех шаблонов из кэша
Marionette.TemplateCache.clear()
Если вы укажете один и более параметров, то они будут трактоваться как templateId
, который используется при загрузке / кэшировании шаблонов:
Marionette.TemplateCache.get("#my-template");
Marionette.TemplateCache.get("#this-template");
Marionette.TemplateCache.get("#that-template");
// удаление 2 из 3 шаблонов из кэша
Marionette.TemplateCache.clear("#my-template", "#this-template");
Настройка способа доступа к шаблонам
Если есть необходимость использования альтернативного движка шаблонов, сохранив при этом
функциональность кеширования, или настройки хранения и получения шаблонов из кэша,
то следует настроить объект TemplateCache
.
По умолчанию TemplateCache
запрашивает шаблоны из DOM (согласно значению атрибута id элемента,
который содержит в себе код шаблона) и компилирует их в HTML-разметку с помощью метода template
из библиотеки underscore.js.
Переопределение способа получения шаблона
По умолчанию для поиска шаблона в DOM и получения его разметки используется jQuery. Для изменения
способа получения шаблона следует переопределить метод loadTemplate
объекта TemplateCache
:
Marionette.TemplateCache.prototype.loadTemplate = function(templateId, {some: options}) {
// загрузка шаблона, возврат данных, которые требуются методу compileTemplate
// Например, ваша собственная функция которая создает шаблон на основании
// значения параметра templateId
var myTemplate = myTemplateFunc(templateId);
// возврат шаблона
return myTemplate;
}
Переопределение способа компиляции шаблонов
При компиляции шаблона результаты работы метода loadTemplate
передаются в метод compileTemplate
,
который в свою очередь возвращает скомпилированный шаблон в виде функции. При переопределении метода
compileTemplate
следует помнить о том, что этот метод должен возвращать функцию, которая в качестве
параметров принимает объект с данными шаблона и возвращает HTML-разметку в виде строки.
Marionette.TemplateCache.prototype.compileTemplate = function(rawTemplate, {some: options}) {
// использование Handlebars.js для компиляции шаблона
return Handlebars.compile(rawTemplate);
}