Двигуни шаблонів jQuery [закрито]


204

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

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

Будь-які поради щодо використання інших двигунів-шаблонів?


1
Я хотів двічі задати це питання :)
Марк Шультхейс

1
Я хотів би перевірити дуже приємні (але попередні бета-версії) JSViews та JSRender, схожі на потенційного офіційного двигуна JQuery / UI (принаймні так говорять дорожні карти)
Еран Медан,

1
JsRender тепер має публічного бета-кандидата: borismoore.com/2012/03/…
Джон Папа

Зараз я використовую шаблони DoT, хороша продуктивність, і вуса як нотація
Eran Medan

Відповіді:


109

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



@ Thr4wn, джерело дозволу є значно більшим, ніж бібліотека, про яку йдеться у пов'язаних статтях. Обидва Резіга, правда.
Френк Швітерман

@Frank "джерело репро є значно більше, ніж бібліотека, про яку йдеться у пов'язаних статтях" Гм? Скажи що? Не впевнений, що ти розумієш під цим взагалі.
Марк Шультейс

2
@Mark: він мав на увазі "значно інше, ніж".
Доменік

Я не бачив жодного прикладу складних форм, що будуються з цим. Хтось досліджував, що знадобиться, тобто додавати рядок, частину цілого шаблону, щоб вмістити новий елемент у форму, пов'язану з масивом об'єкта? Шаблон включатиме в себе шаблони індексів елементів масивів і може бути належним чином серіалізований для POSTing. Але мені важко все це думати. Мета - функціональність, схожа на InfoPath. (Мені відомо про різні існуючі функції інфопата та альтернативи Інфопату.)
Джейсон Клебан

47

Щойно зробив деякі дослідження з цього питання, і я буду використовувати jquery-tmpl . Чому?

  1. Це написано Джоном Резігом.
  2. Він буде підтримуватися основною командою jQuery як "офіційний" плагін. EDIT: Команда jQuery застаріла.
  3. Він досягає ідеального балансу між простотою та функціональністю.
  4. Він має дуже чистий і добре продуманий синтаксис.
  5. Він за замовчуванням кодує HTML.
  6. Це дуже розширюється.

Детальніше тут: http://forum.jquery.com/topic/templating-syntax


+1. Але я використав рик Ріка. Bcoz це маленький і добре відповідає моєму призначенню.
IsmailS

це було тільки оголошено , що тепер це офіційний плагін
Serg

20
На жаль, він знецінився . будь-який форкер?
OnesimusUnbound

3
Чи змінився сценарій тепер у 2012 році, я маю на увазі, чи є кращі рішення для шаблону за допомогою бібліотек, розроблених на версії оригінального сценарію resig?
Раджат Гупта

4
@OnesimusUnbound Це було супер-насінням JS Render. github.com/BorisMoore/jsrender
Blowsie


17

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>

Тестова сторінка ...


Це не робить структур управління (ifs і loops)
mahemoff

13

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/


EDIT: Він залишився поза jQuery 1.5 і тепер буде координуватися командою інтерфейсу jQuery, оскільки це буде залежністю від майбутніх сіток користувальницького інтерфейсу jQuery.

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


11

Не знаєте, як він вирішує вашу конкретну проблему, але є також механізм шаблонів PURE .


окрім своїх обмежень, PURE дуже простий у використанні
Jader Dias

@Jader, які обмеження найбільш болючі?
Мік

@ Mic PURE обмежений дизайном. У двигунах шаблону на стороні сервера не потрібно дотримуватися дійсного HTML, але PURE заснований на HTML. Але я думаю, що існують химерності, які дозволять іншому двигуну шаблонів JavaScript бути настільки ж потужним, як і серверні.
Джадер Діас

@Jader, нормально лише для HTML. Але я не зрозумів, що ви маєте на увазі під примхами та іншим двигуном.
Мік

@Mic PURE слід переписати з нуля, щоб включити деякі функції. Щоб дозволити недійсні шаблони HTML, слід використовувати scriptтеги з атрибутом, typeвідмінним від text/javascript. Це одна "химерність", яка дозволила б недійсний HTML.
Jader Dias

7

Це залежить від того, як ви визначаєте "найкраще", будь ласка, дивіться тут мій пост у цій темі

Якщо ви шукаєте найшвидших , ось хороший орієнтир , здається, 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 для шаблонів та прив'язки інтерфейсу користувача


4

Тільки бути дурним ^^

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


3

Це не конкретно для jsquery, але ось бібліотека шаблонів на основі JS, випущена google як відкритий код:

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

Це дозволяє використовувати елементи DOM в якості шаблонів і повторно вводити (оскільки результат виведення шаблону все ще є шаблоном, який можна повторно відтворити за допомогою іншої моделі даних).


2

Інші вказали на jquery-tmpl, і я відповів на ці відповіді. Але обов'язково погляньте на вилки github.

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


1
Якась конкретна вилка для пошуку виправлень?
Кевін Хакансон

TBH, це трохи безладно ... Я пішов на github.com/appendto/jquery-tmpl після швидкого сканування змін та врахування факту, що appendto - це компанія. YMMV
Янв

jquery-tmpl складено в офіційному дистрибутиві 1.4.3.
Янн


1

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



1

Для дуже легкої роботи jquery-tmpl є адекватним, але в деяких випадках він вимагає, щоб дані знали, як форматувати себе (погано!).

Якщо ви шукаєте більш повнофункціональний плагін для шаблонів, я б запропонував Orange-J . Це надихнуло Фрімаркера. Він підтримує, якщо в іншому випадку, перетинає об'єкти та масиви, вбудовує javascript, включаючи шаблони в межах шаблонів, і має відмінні параметри форматування для виведення (maxlen, wordboundary, htmlentities тощо).

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


0

Ви можете трохи подумати, як ви хочете створити свої шаблони.

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

Існує ще один клас підходів до шаблонів, які використовують звичайний HTML, але дозволяють вказувати прив'язки даних з атрибутами елементів, класами CSS або зовнішніми відображеннями.

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

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

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



0

Наразі я використовую мульти HTML-рамку шаблонів. Ця рамка значно спрощує імпорт шаблонових даних у вашу DOM. Також чудове моделювання MVC.

http://www.enfusion-framework.org/ (подивіться на зразки!)


-1

Існує також переписання PURE by beebole - jquery pure html шаблони - https://github.com/mpapis/jquery-pure-templates

Це повинно дозволяти набагато більше автоматичного візуалізації здебільшого за допомогою селекторів jquery, що важливіше, що він не вимагає вводити в HTML химерні речі.

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