Рекомендуемая библиотека шаблонов JavaScript HTML для JQuery?

Любые предложения о том, какая библиотека шаблонов HTML будет хорошо сочетаться с JQuery? Поиск в Google выдает довольно много библиотек, но я не уверен, есть ли общепризнанная библиотека, которая выдержала бы испытание временем.


person Shiva    schedule 16.01.2009    source источник
comment
Скажем, вы возвращаете объект json со 100 записями. Каждая запись должна генерировать один и тот же фрагмент html. Это просто помогает использовать шаблон, чем генерировать разметку в js. Позволяет дизайнеру спроектировать его, а не разметку внутри строки в функции js.   -  person redsquare    schedule 16.01.2009
comment
@cletus - потому что проще использовать шаблон в формате html, чем цепочку добавлений   -  person Andrey    schedule 20.01.2011
comment
Используйте это сравнение производительности, чтобы помочь вам сделать выбор: jsperf.com/dom-vs-innerhtml на основе шаблонов   -  person A. M.    schedule 10.09.2013


Ответы (7)


Ну, если быть откровенным, шаблоны на стороне клиента сейчас очень популярны, но это довольно джунгли.

самые популярные, я считаю:

  • pure: использует только js, а не собственный "синтаксис"
  • mustache: довольно стабильно и приятно, как я слышал.
  • jqote2: очень быстро согласно jsperfs
  • шаблоны jquery (устаревшие):

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

Лично у меня возникли трудности с добавлением нового синтаксиса и набора логики (смешивание логики и шаблона, привет??), и я пошел на чистом js. Каждый из моих шаблонов хранится в собственном html-файле (./usersTable.row.html). Я использую шаблоны только при ajax-контенте, и у меня есть несколько "логических" js-файлов, один для таблиц, один для div, один для списков. и даже не для вариантов выбора (где я использую другой метод).

Каждый раз, когда я пытался сделать что-то более сложное, я обнаруживал, что код менее понятен и требует больше времени для стабилизации, чем «старый» способ. Логика в шаблоне, на мой взгляд, полная ерунда, а добавление собственного синтаксиса добавляет только очень трудно отслеживаемые ошибки.

person roselan    schedule 19.11.2011

шаблоны jTemplates

механизм шаблонов для JavaScript.

Плагин для jQuery...

Функции:

  • 100% в JavaScript
  • прекомпилятор
  • Поддержка JSON
  • Работа с Аяксом
  • Разрешить использование кода JavaScript внутри шаблона
  • Разрешить создавать каскадные шаблоны
  • Разрешить определять параметры в шаблонах
  • Живое обновление! - автоматическое обновление контента с сервера...
person redsquare    schedule 16.01.2009

здесь есть документ для обсуждения этой темы, в котором рассматривается ряд инструментов для создания шаблонов. Однако это не относится к jQuery.

person Marc Gravell    schedule 16.01.2009

Подключаемый модуль шаблонов jQuery, созданный Microsoft и принятый в качестве официального подключаемого модуля jQuery.

Но обратите внимание, что теперь он устарел.

person Andrey    schedule 19.01.2011
comment
и устарел с тех пор. Разработка остановлена, и это не выйдет из бета-версии. парень из MS и команда jquery-ui работают над новым шаблоном, основанным на JSRender;) - person roselan; 19.11.2011
comment
Да, облом - я использую его во всем своем веб-приложении :( Спасибо за подсказку! У вас есть ссылка на будущий механизм шаблонов, о котором вы упомянули? - person Andrey; 20.11.2011
comment
если все пойдет хорошо, jsrender by boris moore найдет путь в jquery-ui. Думаю, торопиться некуда ;) - person roselan; 20.11.2011
comment
Я реализовал jsRender в проекте, и это просто потрясающе. Стоит проверить. - person ASeale; 03.08.2012

Я бы проверил json2html, он не требует написания фрагментов HTML и вместо этого полагается на преобразования JSON для преобразования массива объектов JSON в неструктурированные списки. Очень быстро и использует создание DOM.

person Chad Brown    schedule 29.12.2011
comment
отказ от ответственности .. Я написал это. Но проверить стоит ;) - person Chad Brown; 01.01.2012

Пару лет назад я создал IBDOM: http://ibdom.sf.net/ | По состоянию на декабрь 2009 года он поддерживает привязку jQuery, если вы получаете его прямо из ствола.

$("#foo").injectWith(collectionOfJavaScriptObjects);

or

$("#foo").injectWith(simpleJavaScriptObject);

Кроме того, теперь вы можете поместить все маркеры "data:propName" в атрибуты class="data:propName other classnames", чтобы вам не приходилось засорять содержимое вашего приложения этими маркерами.

Мне еще предстоит обновить кучу документации, чтобы отразить мои недавние улучшения, но с 2007 года у меня были различные версии этого фреймворка.

Скептикам этого вопроса:

Когда Microsoft изобрела с помощью IE5 то, что мы теперь знаем как XmlHttpRequest и шаблон «ajax», часть обещания, стоящего за этим, заключалась в чистом обмене данными между веб-браузером и сервером. Эти данные должны были быть инкапсулированы в XML, потому что в 1999/2000 годах XML был просто очень популярен. Помимо получения XML-документа по сети с помощью механизма обратного вызова, компонент MSXML ActiveX от MS также поддерживал предварительную реализацию того, что мы теперь знаем как XSL-T и XPath.

Объединение извлечения HTTP/XML, XPath и XSL-T предоставило разработчикам огромную свободу творчества для создания богатых «документов», которые вели себя как «приложения», просто отправляя и, что более важно, извлекая данные с сервера.

Почему это полезный шаблон? Это зависит от того, насколько сложен ваш пользовательский интерфейс и насколько вы заботитесь о его ремонтопригодности.

При создании визуально очень богатого семантически размеченного интерфейса с помощью продвинутого CSS последнее, что вам нужно сделать, это разбить фрагменты разметки на «мини-контроллер/представления», чтобы вы могли .innerHTML фрагмент документа в основной документ, и вот почему.

Одним из ключевых принципов управления расширенным пользовательским интерфейсом html/css является сохранение его проверки, по крайней мере, на активной фазе разработки. Если ваша разметка проходит проверку, вы можете сосредоточиться на ошибках CSS. Теперь, если фрагменты разметки в конечном итоге внедряются на разных этапах взаимодействия с пользователем, все становится очень громоздким, и все становится хрупким.

Идея заключалась в том, чтобы поместить все ваши конструкции пользовательского интерфейса разметки в один документ, получать ТОЛЬКО ДАННЫЕ по сети и использовать надежную структуру, которая, по крайней мере, просто вставит ваши данные в ваши конструкции разметки. и в большинстве повторяющихся конструкций разметки, которые вы пометили как повторяемые.

Это было возможно с XSL-T и XPath в IE5+, но практически ни в каких других браузерах. Некоторые браузерные фреймворки F/OSS экспериментируют с XPath, но пока это не совсем то, на что мы можем положиться.

Итак, что лучше всего сделать для достижения такого шаблона? ИБДОМ. Получите данные с вашего сервера, введите их в свой документ. легко.

person Community    schedule 22.09.2010
comment
еще одна вещь: IBDOM использует 100% чистые методы DOM и не использует innerHTML. - person Chris Holland; 22.09.2010
comment
еще одно примечание: IBDOM реализует то, что я называю forkedLoopExecution, который является внутренним компонентом, а также чем-то, что можно использовать самостоятельно. Вот в чем была проблема: скажем, вы изменяете DOM с помощью createElement и appendChild в какой-то циклической конструкции, которая должна пройти через довольно большой массив объектов больших данных: большинство браузеров не будут перерисовывать пользовательский интерфейс, пока DOM Возврат кода, влияющего на результат. В большом цикле for с большим количеством данных наши результаты поиска могут занять заметные полсекунды или пару секунд, прежде чем отобразится все это в одном фрагменте. - person Chris Holland; 22.09.2010
comment
решение: выполнение разветвленного цикла использует индуцированное setTimeout рекурсивное выполнение на протяжении всего жизненного цикла многократно передаваемого сбора данных, чтобы, по сути, возвращать и перерисовывать на каждой итерации цикла, давая вам ощущение мгновенного рендеринга: дайте пользователю что-то, на что он может посмотреть, право, черт возьми в настоящее время. - person Chris Holland; 22.09.2010

Вы должны взглянуть на Javascript-Templates, это небольшой механизм шаблонов, используемый в известном плагине jQuery File Upload и разработанный тем же автором, Себастьяном Тшаном (@blueimp)

https://github.com/blueimp/JavaScript-Templates

Следуйте руководству по использованию, составленному Себастьяном, просто удалите эту строку

document.getElementById("result").innerHTML = tmpl("tmpl-demo", data);

Замените его этим

$('#result').html(tmpl('tmpl-demo', data));

Не забудьте добавить тег результата div в свой HTML-файл.

<div id="result"></div>

Наслаждаться

person vinzcelavi    schedule 25.03.2013