Шаблоны jQuery - где их разместить? - PullRequest
5 голосов
/ 18 января 2011

На данный момент у меня есть одна html-страница, которая содержит 4 шаблона и будет иметь гораздо больше.Можно ли поместить шаблоны в разные файлы и «импортировать» их в?Могу ли я определить их в файле .js?

Я использую плагин шаблона jQquery: http://api.jquery.com/category/plugins/templates/

Мой код выглядит как примеры!

Ответы [ 3 ]

5 голосов
/ 02 сентября 2011

Я в основном согласен с ответом этого ответа: Где хранить HTML-шаблоны? Ты уже поступаешь правильно из-за принципа KISS .

В зависимости от того, сколько шаблонов у вас получится (вы упомянули «еще много»), вы можете отделить их от главной страницы. Для этого есть несколько причин.

Одной из причин снова будет принцип KISS. Слишком много шаблонов может затруднить навигацию по исходному коду. Возможно, ваш редактор или IDE уже рассмотрели этот вопрос. В противном случае это может быть хорошей причиной для размещения ваших шаблонов в отдельных файлах.

Другая причина - производительность. Если вы обслуживаете HTML-файл самостоятельно, без шаблонов, ваша страница попадет на клиент и начнет рендеринг гораздо раньше. Вы также можете разрешить клиенту кэшировать некоторые шаблоны и загружать новые только при их изменении. Это значительно ускорит будущие посещения вашего сайта.

Если производительность особенно важна, вы можете рассмотреть сочетание двух подходов. Вы бы включили основные шаблоны, которые собирают основную структуру вашей страницы, в основную страницу HTML. Затем дополнительные шаблоны можно получить после загрузки страницы и / или непосредственно перед тем, как они понадобятся. Чтобы включить необходимые шаблоны, вы можете использовать шаблоны на стороне сервера.

Относительно вашего первоначального вопроса о том, где их хранить, я говорю, что вы должны поместить их в любое место, где это имеет смысл. Затем см. статью Дэйва Уорда об использовании внешних шаблонов с шаблонами jQuery , чтобы получить информацию о том, как создавать и извлекать ваши шаблоны. Вот необходимый фрагмент кода:

// Asynchronously our PersonTemplate's content.
$.get('PersonTemplate.htm', function(template) {

  // Use that stringified template with $.tmpl() and 
  //  inject the rendered result into the body.
  $.tmpl(template, person).appendTo('body');
});

Затем посмотрите Введение в шаблоны jQuery, Стивен Вальтер и перейдите к разделу «Удаленные шаблоны». У него есть пример, который выбирает и компилирует шаблон только один раз, но делает возможным рендеринг несколько раз. Вот основные фрагменты:

// Get the remote template
$.get("ProductTemplate.htm", null, function (productTemplate) {

    // Compile and cache the template
    $.template("productTemplate", productTemplate);

    // Render the products
    renderProducts(0);
});

function renderProducts() {
    // Get page of products
    var pageOfProducts = products.slice(pageIndex * 5, pageIndex * 5 + 5);

    // Used cached productTemplate to render products
    $.tmpl("productTemplate", pageOfProducts).appendTo("#productContainer");
}
2 голосов
/ 18 января 2011

Проверьте этот вопрос о переполнении стека, здесь есть множество примеров РЕДАКТИРОВАТЬ: возможно, устарел Рекомендована библиотека HTML-шаблонов JavaScript для JQuery?

Также, есть более свежая статья об использовании внешних файлов шаблонов: http://encosia.com/2010/10/05/using-external-templates-with-jquery-templates/

0 голосов
/ 21 января 2011

Я не знаю, поможет ли это, если вы не используете .NET. Но у меня та же проблема, и я написал код для этого:

http://htmldeploy.codeplex.com/SourceControl/changeset/view/228d0905a46b#src%2fHtmlDeploy%2fJqueryTemplate.cs

Эта вещь в основном просто идет по пути, копирует и вставляет все html-файлы и прикрепляет к нему часть script type = "text / x-jquery-tmpl" . 1010 *

Если вам нужно, чтобы это было еще более автоматическим, вот другой код, который добавляет шаблоны в тело файла html / aspx:

http://htmldeploy.codeplex.com/SourceControl/changeset/view/228d0905a46b#src%2fHtmlDeploy%2fMasterPage.cs

Мне не нравится метод внешних шаблонов из-за необходимого количества HTTP-запросов. В идеале, хотите, чтобы он был загружен один раз на странице, и я могу забыть о шаблонах. Если вы используете Asp.net, вы можете поместить это в MasterPage:)

Надеюсь, это помогло

Chi

...