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

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

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

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

Я хотел задать этот вопрос дважды :)

Mark Schultheiss 22.09.2010 18:13

Я бы проверил очень хорошие (но до бета) JSView и JSRender, которые кажутся потенциальным официальным движком шаблонов JQuery / UI (по крайней мере, так говорится в дорожной карте)

Eran Medan 29.02.2012 07:47

У JsRender появился общедоступный бета-кандидат: borismoore.com/2012/03/…

John Papa 07.03.2012 19:48

Сейчас я использую шаблоны DoT, хорошая производительность и нотация, как у усов

Eran Medan 17.03.2012 04:37
Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
204
4
91 216
18
Перейти к ответу Данный вопрос помечен как решенный

Ответы 18

Не знаю, как он справляется с вашей конкретной проблемой, но есть также механизм шаблонов ЧИСТЫЙ.

помимо своих ограничений, PURE очень прост в использовании

Jader Dias 12.08.2010 20:10

@Jader, какие ограничения самые болезненные?

Mic 23.09.2010 14:21

@Mic PURE ограничен дизайном. В серверных механизмах шаблонов вам не обязательно придерживаться действительного HTML, но PURE основан на HTML. Но я думаю, что есть причуды, которые позволили бы другому движку шаблонов javascript быть таким же мощным, как и серверные.

Jader Dias 23.09.2010 15:46

@Jader, только для HTML. Но я не понял, что вы имеете в виду под причудами и другим двигателем.

Mic 23.09.2010 16:08

@Mic PURE придется переписать с нуля, чтобы можно было включить некоторые функции. Чтобы разрешить недопустимые шаблоны HTML, вы должны использовать теги script с атрибутом type, отличным от text/javascript. Это одна из «причуд», которая допускает недопустимый HTML.

Jader Dias 23.09.2010 17:00

Некоторое время я использовал PURE, а недавно перешел на официальный jQuery-tmpl. PURE нелегко читать. Многие мои коллеги просили о помощи, глядя на PURE. Никто не просил помощи при поиске jQuery-tmpl.

gradbot 30.04.2011 21:18

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

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

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

Ответ принят как подходящий

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

github.com/jquery/jquery-tmpl is the actual repo of Resig's templating plugin.
Alexander Bird 17.07.2010 21:50

@ Thr4wn, исходный код в репро значительно превосходит библиотеку, обсуждаемую в связанных статьях. Но оба от Ресига, конечно.

Frank Schwieterman 25.07.2010 22:38

@Frank "источник в репро значительно превосходит библиотеку, обсуждаемую в связанных статьях" Ага? Чего-чего? Не совсем понимаю, что вы имеете в виду.

Mark Schultheiss 29.07.2010 16:33

@Mark: он имел в виду "значительно отличается от".

Domenic 20.09.2010 10:35

Я не видел примеров построения сложных форм с его помощью. Кто-нибудь исследовал, что нужно, например, добавить строку, некоторую часть всего шаблона, чтобы разместить новый элемент в форме, привязанной к массиву объекта? Шаблон будет включать в себя создание индексов элементов массивов и может быть должным образом сериализован для POSTing. Но мне сложно все это обдумать. Цель - функциональность, подобная InfoPath. (Я знаю о различных существующих функциях и альтернативах infopath.)

Jason Kleban 02.12.2010 21:24

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

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

jQuery Nano:

Template Engine

Basic Usage

Assuming you have following JSON response:

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

you can make:

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

and you get ready string:

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

Test page...

Это не касается управляющих структур (ifs и loop)

mahemoff 07.02.2013 12:33

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

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

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

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

Теперь это стало jQote2: aefxx.com/jquery-plugins/jqote2

Alex Angas 21.06.2010 03:57

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

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

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

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

+1. Но я использовал Рика Страла. Bcoz это маленький и хорошо служит моей цели.

IsmailS 17.07.2010 15:31

только что было объявлено, что теперь это официальный плагин

serg 08.10.2010 01:35

К сожалению, это был обесценившийся. какой форкер?

OnesimusUnbound 10.10.2011 12:53

Изменился ли сценарий в 2012 году, я имею в виду, есть ли лучшие решения для создания шаблонов с использованием библиотек, разработанных на основе исходного сценария resig?

Rajat Gupta 23.09.2012 10:48

@OnesimusUnbound Он был засеян JS Render. github.com/BorisMoore/jsrender

Blowsie 19.12.2012 12:05

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

OnesimusUnbound 20.12.2012 13:27

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

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

Какая-нибудь конкретная вилка, на которую стоит обратить внимание?

Kevin Hakanson 06.08.2010 19:43

TBH, это немного беспорядочно ... Я выбрал github.com/appendto/jquery-tmpl после быстрого просмотра изменений и с учетом того факта, что appendto - это компания. YMMV

Yann 11.08.2010 02:11

jquery-tmpl включен в официальный дистрибутив 1.4.3.

Yann 14.10.2010 09:30

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 UI, поскольку он будет зависеть от предстоящей jQuery UI Grid.

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

Также есть переписанный PURE by beebole - jquery pure html templates - https://github.com/mpapis/jquery-pure-templates

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

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

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

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

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

ЧИСТЫЙ, указанный в качестве другого ответа, является еще одним примером этого подхода.

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

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

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

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

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

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

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

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

Если вы ищете самый популярный плагин JQuery официальный, вот что я узнал

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

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

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

Note: The jQuery team has decided not to take this plugin past beta. It is no longer being actively developed or maintained. The docs remain here for the time being (for reference) until a suitable replacement template plugin is ready.

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

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

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

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

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

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

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

Dropbox, используя Шаблонизатор Джона Ресига на веб-сайте. Они немного изменили это, вы можете проверить это js файл в Dropbox. Найдите в этом файле tmpl, и вы получите код движка шаблонов.

Спасибо. Надеюсь, это будет кому-то полезно.

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

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

Другие вопросы по теме