Движки шаблонов jQuery

Я ищу механизм шаблонов для использования на стороне клиента. Я пробовал несколько таких шаблонов, как jsRepeater и jQuery. Хотя кажется, что они нормально работают в FireFox, в IE7 все они не работают, когда дело доходит до рендеринга HTML-таблиц.

Я также просмотрел MicrosoftAjaxTemplates.js (из http://www.codeplex.com/aspnet/Release/ProjectReleases.aspx?ReleaseId=16766), но оказывается, что у него та же проблема.

Есть ли какие-нибудь советы по использованию других шаблонизаторов?


person Maurice    schedule 04.10.2008    source источник
comment
Я хотел поднять этот вопрос дважды :)   -  person Mark Schultheiss    schedule 22.09.2010
comment
Я бы проверил очень хорошие (но предварительные бета-версии) JSViews и JSRender, которые кажутся потенциальным официальным механизмом шаблонов JQuery/UI (по крайней мере, так говорится в дорожной карте)   -  person Eran Medan    schedule 29.02.2012
comment
У JsRender теперь есть публичный бета-кандидат: borismoore.com/ 2012/03/   -  person John Papa    schedule 07.03.2012
comment
Сейчас я использую шаблоны DoT, хорошая производительность и нотация, похожая на усы.   -  person Eran Medan    schedule 17.03.2012


Ответы (18)


Ознакомьтесь с сообщением Рика Страла Клиентские шаблоны с помощью jQuery. Он исследует jTemplates, но затем приводит более убедительные доводы в пользу решения для микрошаблонов Джона Резига, даже улучшая его. Хорошее сравнение, много образцов.

person ewbi    schedule 15.10.2008
comment
github.com/jquery/jquery-tmpl — это репозиторий плагина шаблонов Resig. - person Alexander Bird; 17.07.2010
comment
@ Thr4wn, источник в репродукции значительно больше, чем библиотека, обсуждаемая в связанных статьях. Оба от Резига, конечно. - person Frank Schwieterman; 25.07.2010
comment
@Frank, источник в репродукции значительно больше, чем библиотека, обсуждаемая в связанных статьях. Чего-чего? Не совсем уверен, что вы имеете в виду под этим. - person Mark Schultheiss; 29.07.2010
comment
@Mark: он имел в виду нечто совершенно иное. - person Domenic; 20.09.2010
comment
Я не видел примеров сложных форм, построенных с помощью этого. Кто-нибудь исследовал, что потребуется, например, добавить строку, некоторую часть всего шаблона, для размещения нового элемента в форме, связанной с массивом объекта? Шаблон будет включать шаблоны индексов элементов массивов и может быть правильно сериализован для отправки по почте. Но мне трудно все это обдумать. Целью является функциональность, подобная InfoPath. (Мне известно о различных существующих функциях и альтернативах infopath.) - person Jason Kleban; 02.12.2010

Только что провел небольшое исследование и буду использовать jquery-tmpl. Почему?

  1. Это написано Джоном Резигом.
  2. Он будет поддерживаться основной командой jQuery как «официальный» плагин. EDIT: команда jQuery объявила этот плагин устаревшим.
  3. Он обеспечивает идеальный баланс между простотой и функциональностью.
  4. Он имеет очень чистый и хорошо продуманный синтаксис.
  5. Он HTML-кодирует по умолчанию.
  6. Он очень расширяемый.

Подробнее здесь: http://forum.jquery.com/topic/templating-syntax

person Todd Menier    schedule 16.07.2010
comment
+1. Но я использовал Рика Страла. Потому что он маленький и хорошо служит моей цели. - person IsmailS; 17.07.2010
comment
только что было объявлено, что это теперь официальный плагин - person serg; 08.10.2010
comment
К сожалению, он был устарел. любой разветвитель? - person OnesimusUnbound; 10.10.2011
comment
Изменился ли сценарий сейчас, в 2012 году, я имею в виду, есть ли лучшие решения для создания шаблонов с использованием библиотек, разработанных на основе оригинального сценария resig? - person Rajat Gupta; 23.09.2012
comment
@OnesimusUnbound Он был засеян JS Render. github.com/BorisMoore/jsrender - person Blowsie; 19.12.2012
comment
@Blowsie, я знаю об этом и использовал это в одном из своих проектов. В любом случае, спасибо за добавление новой ссылки в комментарий для дальнейшего использования. - person OnesimusUnbound; 20.12.2012

jQote: http://aefxx.com/jquery-plugins/jqote/

Кто-то взял решение Resig для создания микрошаблонов и упаковал его в плагин jQuery.

Я буду использовать это, пока Resig не выпустит свой собственный (если он выпустит свой собственный).

Спасибо за подсказку, ewbi.

person KevBurnsJr    schedule 17.08.2009
comment
Теперь это стало jQote2: aefxx.com/jquery-plugins/jqote2 - person Alex Angas; 21.06.2010

jQuery Nano:

Механизм шаблонов

Основное использование

Предполагая, что у вас есть следующий ответ JSON:

data = {
  user: {
    login: "tomek",
    first_name: "Thomas",
    last_name: "Mazur",
    account: {
      status: "active",
      expires_at: "2009-12-31"
    }
  }
}

ты можешь сделать:

nano("<p>Hello {user.first_name} {user.last_name}! Your account is <strong>{user.account.status}</strong></p>", data)

и вы получаете готовую строку:

<p>Hello Thomas Mazur! Your account is <strong>active</strong></p>

Тестовая страница...

person Tomasz Mazur    schedule 07.08.2009
comment
Это не делает управляющие структуры (ifs и циклы) - person mahemoff; 07.02.2013

jQuery-tmpl будет в ядре jQuery, начиная с jQuery 1.5:

http://blog.jquery.com/2010/10/04/new-official-jquery-plugins-provide-templating-data-linking-and-globalization/

Официальная документация находится здесь:

http://api.jquery.com/category/plugins/templates/


РЕДАКТИРОВАТЬ: он был исключен из jQuery 1.5 и теперь будет координироваться командой пользовательского интерфейса jQuery, поскольку он будет зависеть от предстоящей сетки пользовательского интерфейса jQuery.

http://blog.jquery.it/2011/04/16/official-plugins-a-change-in-the-roadmap/

person jonsequitur    schedule 07.10.2010

Не уверен, как он решает вашу конкретную проблему, но есть также механизм шаблонов PURE.

person Chris Vest    schedule 04.10.2008
comment
помимо своих ограничений, PURE очень прост в использовании - person Jader Dias; 12.08.2010
comment
@Jader, какие ограничения самые болезненные? - person Mic; 23.09.2010
comment
@Mic PURE ограничен дизайном. В механизмах шаблонов на стороне сервера вам не нужно придерживаться действительного HTML, но PURE основан на HTML. Но я думаю, что есть причуды, которые позволили бы другому механизму шаблонов javascript быть таким же мощным, как и серверные. - person Jader Dias; 23.09.2010
comment
@Jader, хорошо только для HTML. Но я не понял, что вы имеете в виду под причудами и другим двигателем. - person Mic; 23.09.2010
comment
@Mic PURE должен быть переписан с нуля, чтобы включить некоторые функции. Чтобы разрешить недопустимые шаблоны HTML, вы должны использовать теги script с атрибутом type, отличным от text/javascript. Это одна причуда, которая допускает недопустимый HTML. - person Jader Dias; 23.09.2010
comment
Некоторое время я использовал PURE и недавно перешел на официальный jQuery-tmpl. PURE нелегко читать. У меня было много коллег, которые просили помощи в поиске PURE. Никто не просил помощи в просмотре jQuery-tmpl. - person gradbot; 30.04.2011

Это зависит от того, как вы определяете «лучший», см. мой пост здесь по теме

Если вы ищете самый быстрый, вот хороший тест, кажется, что DoT побеждает и оставляет всех позади

Если вы ищете самый официальный подключаемый модуль JQuery, вот что я нашел

Часть I. Шаблоны JQuery

Бета-версия, временно-официальный плагин шаблона JQuery был http://api.jquery.com/category/plugins/templates/

Но, видимо, не так давно было решено оставить его в бета-версии...

Примечание. Команда jQuery решила не использовать этот плагин после бета-тестирования. Он больше не разрабатывается и не поддерживается. Документы пока остаются здесь (для справки), пока не будет готов подходящий плагин для замены шаблона.

Часть II. Следующий шаг

новая дорожная карта, похоже, нацелена на новый набор плагинов, JSRender (независимо от DOM и даже механизма рендеринга шаблонов JQuery) и JSViews, которые имеют хорошую привязку данных и реализацию наблюдателя/наблюдаемого шаблона.

Вот сообщение в блоге по теме

http://www.borismoore.com/2011/10/jquery-templates-and-jsviews-roadmap.html

А вот и последний источник

Другие источники

Обратите внимание, что это еще даже не бета-версия, а только элемент дорожной карты, но кажется хорошим кандидатом на то, чтобы стать официальным расширением JQuery/JQueryUI для шаблонов и привязки пользовательского интерфейса.

person Eran Medan    schedule 29.02.2012

Только чтобы быть глупым ^^

// LighTest TPL
$.tpl = function(tpl, val) {
    for (var p in val)
        tpl = tpl.replace(new RegExp('({'+p+'})', 'g'), val[p] || '');
    return tpl;
};
// Routine...
var dataObj = [{id:1, title:'toto'}, {id:2, title:'tutu'}],
    tplHtml = '<div>N°{id} - {title}</div>',
    newHtml    = '';
$.each(dataObj, function(i, val) {
     newHtml += $.tpl(tplHtml, val);
});
var $newHtml = $(newHtml).appendTo('body');

http://jsfiddle.net/molokoloco/w8xSx/;)

person molokoloco    schedule 08.11.2011

Это не специфично для jsquery, но вот библиотека шаблонов на основе JS, выпущенная Google с открытым исходным кодом:

http://code.google.com/p/google-jstemplate/

Это позволяет использовать элементы DOM в качестве шаблонов и является реентерабельным (поскольку выходные данные рендеринга шаблона по-прежнему являются шаблоном, который можно повторно визуализировать с другой моделью данных).

person levik    schedule 04.10.2008

Другие указали jquery-tmpl, и я проголосовал за этот ответ. Но не забудьте взглянуть на форки github.

Там есть важные исправления и интересные функции. http://github.com/jquery/jquery-tmpl/network

person Yann    schedule 29.07.2010
comment
Любая конкретная вилка, на которую можно обратить внимание в поисках исправлений? - person Kevin Hakanson; 06.08.2010
comment
TBH, это немного запутанно... Я выбрал github.com/appendto/jquery-tmpl после быстрого просмотра изменений и с учетом того факта, что appendto — это компания. YMMV - person Yann; 11.08.2010
comment
jquery-tmpl был свернут в официальном дистрибутиве 1.4.3. - person Yann; 14.10.2010

У Джона Резига есть один, который он разместил в своем блоге. http://ejohn.org/blog/javascript-micro-templating/

person morgancodes    schedule 18.05.2009

Если вы работаете в .NET Framework 2.0/3.5, вам следует взглянуть на JBST, реализованный на http://jsonfx.net/download/#ajax. Он имеет решение для создания шаблонов на стороне клиента, которое имеет знакомый синтаксис JSP/ASP, но предварительно компилируется во время сборки для компактных шаблонов с возможностью кэширования, которые не нужно анализировать во время выполнения. Он хорошо работает с jQuery и другими библиотеками JavaScript, поскольку сами шаблоны скомпилированы в чистый JavaScript.

person mckamey    schedule 19.05.2009

Я использовал плагин jtemplates jquery, но производительность была очень плохой. Я переключился на trimpath (http://code.google.com/p/trimpath/wiki/JavaScriptTemplates), который имеет гораздо лучшую производительность. Я не заметил никаких проблем с IE7 или FF.

person EShy    schedule 28.04.2010

Для очень легкой работы подходит jquery-tmpl, но в некоторых случаях требуется, чтобы данные знали, как форматировать себя (плохо!).

Если вам нужен более полнофункциональный плагин для создания шаблонов, я бы посоветовал Orange-J. Он был вдохновлен Freemarker. Он поддерживает if, else, циклы по объектам и массивам, встроенный javascript, включая шаблоны в шаблонах, и имеет отличные параметры форматирования для вывода (maxlen, wordboundary, htmlentities и т. д.).

О, и простой синтаксис.

person Donovan Walker    schedule 29.03.2011

Возможно, вам захочется немного подумать о том, как вы хотите создавать свои шаблоны.

Одна из проблем со многими из перечисленных шаблонных решений (jQote, jquery-tmpl, jTemplates) заключается в том, что они требуют, чтобы вы вставляли не-HTML в свой HTML, что может быть проблемой для работы с инструментами HTML или в процессе разработки с дизайнерами HTML. . Лично мне такой подход не нравится, хотя у него есть свои плюсы и минусы.

Существует еще один класс шаблонных подходов, которые используют обычный HTML, но позволяют указывать привязки данных с атрибутами элементов, классами CSS или внешними сопоставлениями.

Knockout – хороший пример такого подхода, но я сам им не пользовался, поэтому отказываюсь от него. голосов, чтобы решить, нравится это другим или нет. По крайней мере, пока у меня не будет времени поиграть с ним побольше.

PURE, указанный в качестве другого ответа, является еще одним примером такого подхода.

Для справки вы также можете посмотреть chain.js, но это не так. похоже, он был значительно обновлен с момента его первоначального выпуска. Дополнительную информацию об этом см. на http://javascriptly.com/2008/08/a-better-javascript-template-engine/.

person studgeek    schedule 23.03.2011


В настоящее время я использую структуру с несколькими шаблонами HTML. Этот фреймворк значительно упрощает импорт шаблонных данных в DOM. Также отличное моделирование MVC.

http://www.enfusion-framework.org/ (посмотрите на примеры!)

person Bny    schedule 30.05.2014

Существует также переписанная версия PURE от beebole — jquery pure html templates — https://github.com/mpapis/jquery-pure-templates

Это должно позволять гораздо больше автоматического рендеринга, в основном с использованием селекторов jquery, что более важно, не требует добавления причудливых вещей в HTML.

person mpapis    schedule 04.11.2010