Рекомендована бібліотека шаблонів HTML JavaScript для JQuery? [зачинено]


89

Будь-які пропозиції щодо того, яка бібліотека шаблонів HTML буде добре поєднуватися з JQuery? Гуглиння виявляє чималу кількість бібліотек, але я не впевнений, чи існує відома бібліотека, яка витримає випробування часом.


21
Скажімо, ви повертаєте json-об'єкт із 100 записами. Кожен запис повинен генерувати однаковий HTML-фрагмент. Це просто допомагає використовувати шаблон, ніж генерувати розмітку в js. Дозволяє дизайнеру проектувати його, а не розмітку всередині рядка у функції js
redsquare

3
@cletus - тому що легше використовувати шаблон у форматі HTML, ніж ланцюжок додатків
Андрій

2
Використовуйте це порівняння перфорація , щоб допомогти вам на вибір: jsperf.com/dom-vs-innerhtml-based-templating
AM

Відповіді:


58

Ну, чесно кажучи, на сьогодні клієнтські шаблони дуже гарячі, але цілі джунглі.

я вважаю, що найпопулярнішими є:

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

є багато інших, але ви повинні протестувати їх, щоб побачити, що вам підходить, і ваш стиль проекту найкращий.

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

Кожного разу, коли я намагався зробити щось більш складне, я виявляв, що код був менш зрозумілим і забирав у мене більше часу на стабілізацію, ніж робив це «по-старому». На мою думку, логіка в шаблоні є абсолютно нерозумною, і додавання власного синтаксису додає лише дуже важкі для відстеження помилки.


14

jШаблони

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

Плагін до jQuery ...

Особливості:

  • 100% у JavaScript
  • попередній компілятор
  • Підтримка JSON
  • Робота з Ajax
  • Дозволити використовувати код JavaScript усередині шаблону
  • Дозволити створювати каскадні шаблони
  • Дозволити визначати параметри в шаблонах
  • Оновлення в прямому ефірі! - автоматичне оновлення вмісту з сервера ...

8

Існує розумне обговорення документ на цю тему тут , яка охоплює широкий спектр шаблонизатор. Однак не специфічно для jQuery.


5

Плагін jQuery Templates, створений Microsoft і прийнятий як офіційний плагін jQuery.

Але зверніть увагу, що зараз він застарів.


13
і "застарілий" з. Розробка зупинена, і це не вийде з бета-версії. хлопець із MS та команда jquery-ui працюють над новим шаблоном, заснованим на JSRender тыс.)
roselan

Ага, облом - я використовую його в усьому своєму веб-додатку :( Хоча дякую за підказку! Чи є у вас посилання на майбутній механізм шаблонування, про який ви згадали?
Андрій

1
якщо все піде добре, jsrender від Бориса Мура знайде шлях до jquery-ui. Не треба поспішати, мабуть;)
roselan

1
Я реалізував jsRender у проекті, і це просто приголомшливо. Варто перевірити.
ASeale

4

Я б перевірив json2html , він відмовляється від того, щоб писати фрагменти HTML, і замість цього покладається на JSON-перетворення для перетворення масивів об’єктів JSON у неструктуровані списки. Дуже швидко і використовує створення DOM.


4
Застереження .. Я це написав. Але варто перевірити;)
Чад Браун

3

Кілька років тому я побудував IBDOM: http://ibdom.sf.net/ | Станом на грудень 2009 року він підтримує прив'язку jQuery, якщо ви отримуєте її прямо з багажника.

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

або

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

Крім того, тепер ви можете розміщувати всі маркери "data: propName" в атрибутах class = "data: propName othernames names", тому вам не доведеться смітити вміст програми цими маркерами.

Я ще не оновив купу документації, щоб відобразити мої нещодавні вдосконалення, але я маю різні версії цього фреймворку у виробництві з 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, але це ще не зовсім те, на що ми можемо покластися.

То що наступне найкраще, щоб досягти такої моделі? IBDOM. Отримуйте дані з вашого сервера, вводьте їх у свій документ. без зусиль.


ще одна річ: IBDOM використовує 100% чисті DOM-методи і нуль innerHTML.
Chris Holland

ще одне зауваження: IBDOM реалізує те, що я називаю "forkedLoopExecution", що є внутрішньо використовуваним компонентом, а також тим, що можна використовувати самостійно. Тут була проблема: припустимо, ви модифікуєте DOM за допомогою createElement і appendChild, в якійсь циклічній конструкції, яка повинна переходити через досить великий масив об’єктів великих даних: більшість браузерів не будуть “перефарбовувати” користувальницький інтерфейс, поки код, що впливає на DOM, "повертається". У великому циклі "for" із великою кількістю даних результати пошуку можуть зайняти помітну півсекунду-пару секунд, перш ніж відображати все це одним шматком.
Chris Holland

рішення: виконання розгалуженого циклу використовує рекурсивне виконання, викликане setTimeout, протягом усього періоду багаторазово переданого збору даних, по суті, "повертає і перефарбовує" на кожній ітерації циклу, даючи вам таке миттєве відчуття візуалізації: "дайте користувачеві щось подивитися - прямо зараз ".
Chris Holland

2

Ви повинні поглянути на 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>

Насолоджуйтесь

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.