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);
}