Comments 54
если бы в javascript можно было перенос строки делать, было бы совсем хорошо
0
Спасибо большое!
Использовал <% Embedded Javascript %> но тут говорят, что у него со скоростью проблемы.
Да и функциональнее, как мне показалось, jTemplates.
Использовал <% Embedded Javascript %> но тут говорят, что у него со скоростью проблемы.
Да и функциональнее, как мне показалось, jTemplates.
0
UFO just landed and posted this here
Ссылка такая по идее: ejohn.org/blog/javascript-micro-templating/ хабр бьёт по «java».
Смотрел много-много разных, мне больше всего понравился jTemplates, поэтому «пиарю» его :-)
Смотрел много-много разных, мне больше всего понравился jTemplates, поэтому «пиарю» его :-)
0
Перенес в блог «Javascript» возможно кому-то будет полезно
0
в mootools делает тоже самое substitute
+1
Там используется метод with — ужасная производительность
+1
width никогда не использовал, ничего сказать не могу, а вы откуда взяли информацию? есть какие нибудь тесты посмотреть? я думаю что не все так плачевно, да и наверно все зависит от конкретного случая.
0
тьфу *with
+1
Вы можете провести тесты — все очень даже плачебно.
Когда вы используете with метод при каждом обращении к переменной (внутри блока) будет производиться поиск в заданном в with(...) объекте, который имеет динамическую природу.
Обычно поиск производится в статических областях (scopes), которые определяются на этапе компилирования.
Естественно, поиск в javascript объекте значительно медленнее, чем просто взять данные из определенной области памяти.
Когда вы используете with метод при каждом обращении к переменной (внутри блока) будет производиться поиск в заданном в with(...) объекте, который имеет динамическую природу.
Обычно поиск производится в статических областях (scopes), которые определяются на этапе компилирования.
Естественно, поиск в javascript объекте значительно медленнее, чем просто взять данные из определенной области памяти.
0
Сравните:
и
var start=+new Date;with({x:1}){for(var i=0;i< 1E6;i++){x++}};console.log(+new Date - start);
и
var x=0,start=+new Date;for(var i=0;i< 1E6;i++){x++};console.log(+new Date - start);
0
наибольшая разница получилась между такими числами 1084 (с with) и 1003 (без), разница примерно ~ 0,081%
не думаю что это плачевно
не думаю что это плачевно
0
в firefox 3.6 одинаково, в chrome 5 with на 20% медленнее
+1
первый код 804, второй 784, firefox 3.6.3
в хроме 5.0.375.70 первый 1305, второй 973
а еще говорят хром быстрый...
в хроме 5.0.375.70 первый 1305, второй 973
а еще говорят хром быстрый...
+2
UFO just landed and posted this here
Честно говоря "inline" всегда быстрее, а еще можно было бы так:
var html = ["<tr><td>", data.title, "</td><td>", data.type, "</td><td><a href='tags/", data.tag,"'>", data.tag, "</a></td><td>", data.created_at, "</td></tr>"].join("");
+2
для шаблонизирования в Жаваскрипте рекомендую Zparse code.riiv.net/zparse/ — мощная штука.
+1
а кто-то может рассказать для чего это применять на практике?
-5
Да знаем об этой supplant-технике, используем :)
0
Могу подсказать еще один вариант.
Допустим нужно составить tr
Тупо, скрываем ее в HTML коде:
…
После чего выбираем его из HTML:
jQuery('table tr')
Вот Вам и шаблон, с которым можно работать.
Допустим нужно составить tr
Тупо, скрываем ее в HTML коде:
…
После чего выбираем его из HTML:
jQuery('table tr')
Вот Вам и шаблон, с которым можно работать.
-4
Решение от Джона Резига
ejohn.org/blog/javascript-micro-templating/
ejohn.org/blog/javascript-micro-templating/
+1
Шаблоны элегантны, но что с производительностью? Есть какие-нибудь сравнительные тесты?
0
Лично я предпочитаю етот шаблонизатор
+1
Аналогичное: sreznikov.blogspot.com/2010/01/supplant.html
0
Вот такая вот ерунда: github.com/ratsam/AstralTemplate
Почти «настоящий» шаблонизатор, с поддержкой include, extend, хелперами и прочими ненужностями.
Неплохо тормозит с включенным фаербагом :)
Почти «настоящий» шаблонизатор, с поддержкой include, extend, хелперами и прочими ненужностями.
Неплохо тормозит с включенным фаербагом :)
+1
Шаблонизаторы для JS сейчас переживают процесс «второго рождения» в связи с появлением node.js: wiki.github.com/ry/node/modules#templating
а из клиентских либ неплохой шаблонизатор XTemplate встроен в Sehcha (ex — Ext JS)
а из клиентских либ неплохой шаблонизатор XTemplate встроен в Sehcha (ex — Ext JS)
0
экранирование спецсимволов кто будет делать?
+2
контроллер, в шаблон данные уже экранированные должны попадать
0
Есть отличный jQuery плагин Taconite malsup.com/jquery/taconite/ который позволяет в ответ на запрос послать и HTML и javascript и команды jQuery, т.е. решить ту же задачу значительно проще и универсальнее.
-1
Честно говоря не вижу в этом подходе ничего нового. =)
Что же касается конкатенаций, так тут что-то мне подсказывает что replace работает помедленнее, чем они.
(Но это нужно проверить)
Что же касается конкатенаций, так тут что-то мне подсказывает что replace работает помедленнее, чем они.
(Но это нужно проверить)
+2
Использую в качестве шаблона xsl. А в качастве данных xml.
И да собираю в html на стороне клиента.
Плюсы:
+ менять xsl в разы удобнее чем html-текст в яваскрипте.
+ можно инклудить шаблоны
+ не нужно разбирать пришедший json, Все труды ложаться на xslt-процессор
+ представление от данных отделено как никогда
Минусы:
— не работает в konqueror
* тестов не проводил, но может быть в каком-то браузере оно работает не достаточно быстро. Задержек из-за xslt-процессора замечено не было.
(Если правильно подойти к кешированию xsl и xml, то получаем доп. бонус)
И да собираю в html на стороне клиента.
Плюсы:
+ менять xsl в разы удобнее чем html-текст в яваскрипте.
+ можно инклудить шаблоны
+ не нужно разбирать пришедший json, Все труды ложаться на xslt-процессор
+ представление от данных отделено как никогда
Минусы:
— не работает в konqueror
* тестов не проводил, но может быть в каком-то браузере оно работает не достаточно быстро. Задержек из-за xslt-процессора замечено не было.
(Если правильно подойти к кешированию xsl и xml, то получаем доп. бонус)
+1
habrahabr.ru/blogs/javascript/82615/
просто переделанный вот этот скрипт, для возможности использовать функции в шаблонах:
api.prototypejs.org/language/template/
просто переделанный вот этот скрипт, для возможности использовать функции в шаблонах:
api.prototypejs.org/language/template/
0
String.format в ExtJS
www.sencha.com/deploy/dev/docs/?class=String
www.sencha.com/deploy/dev/docs/?class=String
0
В dojo еще есть поддержка django templates language. Может быть удобно если хочется реюзать шаблоны между клиентом и сервером.
0
Sign up to leave a comment.
Немного шаблонизирования