Pull to refresh

Comments 54

если бы в javascript можно было перенос строки делать, было бы совсем хорошо
UFO just landed and posted this here
А двойные кавычки работают?
UFO just landed and posted this here
Спасибо большое!
Использовал <% Embedded Javascript %> но тут говорят, что у него со скоростью проблемы.
Да и функциональнее, как мне показалось, jTemplates.
jTemplates юзаю совместно с Django, синтаксис шаблонов одинаковый (в Django, конечно, фич намного больше), в этом удобство. Ну и работает как положено, никаких проблем замечено не было. Удобно применять одинаковый подход на всех уровнях разработки.
UFO just landed and posted this here
Ссылка такая по идее: ejohn.org/blog/javascript-micro-templating/ хабр бьёт по «java».

Смотрел много-много разных, мне больше всего понравился jTemplates, поэтому «пиарю» его :-)
Перенес в блог «Javascript» возможно кому-то будет полезно
Там используется метод with — ужасная производительность
width никогда не использовал, ничего сказать не могу, а вы откуда взяли информацию? есть какие нибудь тесты посмотреть? я думаю что не все так плачевно, да и наверно все зависит от конкретного случая.
Вы можете провести тесты — все очень даже плачебно.
Когда вы используете with метод при каждом обращении к переменной (внутри блока) будет производиться поиск в заданном в with(...) объекте, который имеет динамическую природу.
Обычно поиск производится в статических областях (scopes), которые определяются на этапе компилирования.
Естественно, поиск в javascript объекте значительно медленнее, чем просто взять данные из определенной области памяти.
Сравните:
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);
наибольшая разница получилась между такими числами 1084 (с with) и 1003 (без), разница примерно ~ 0,081%
не думаю что это плачевно
в firefox 3.6 одинаково, в chrome 5 with на 20% медленнее
первый код 804, второй 784, firefox 3.6.3
в хроме 5.0.375.70 первый 1305, второй 973
а еще говорят хром быстрый...
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("");
UFO just landed and posted this here
Это уже не шаблонизатор. Тогда проще весь HTML передавать собранным.
а кто-то может рассказать для чего это применять на практике?
Да знаем об этой supplant-технике, используем :)
Могу подсказать еще один вариант.
Допустим нужно составить tr
Тупо, скрываем ее в HTML коде:

После чего выбираем его из HTML:
jQuery('table tr')
Вот Вам и шаблон, с которым можно работать.
Шаблоны элегантны, но что с производительностью? Есть какие-нибудь сравнительные тесты?
Вот такая вот ерунда: github.com/ratsam/AstralTemplate

Почти «настоящий» шаблонизатор, с поддержкой include, extend, хелперами и прочими ненужностями.
Неплохо тормозит с включенным фаербагом :)
Шаблонизаторы для JS сейчас переживают процесс «второго рождения» в связи с появлением node.js: wiki.github.com/ry/node/modules#templating

а из клиентских либ неплохой шаблонизатор XTemplate встроен в Sehcha (ex — Ext JS)
экранирование спецсимволов кто будет делать?
контроллер, в шаблон данные уже экранированные должны попадать
я не хочу каждую строчку вручную экранировать. это гемор и я обязательно что-нибудь забуду.
Кто сказал? Экранирование нужно вью, пусть вью этим и занимается
вью должен только отображать, а какие там пришли данные, его вообще не должно интересовать.
Он отвечает за предстваление этих данных. Где-то надо эскейпить, а где-то не надо, он и решает где и что делать
тем более что эскейпить нужно по разному в зависимости от того, куда вставлять.
Есть отличный jQuery плагин Taconite malsup.com/jquery/taconite/ который позволяет в ответ на запрос послать и HTML и javascript и команды jQuery, т.е. решить ту же задачу значительно проще и универсальнее.
Честно говоря не вижу в этом подходе ничего нового. =)
Что же касается конкатенаций, так тут что-то мне подсказывает что replace работает помедленнее, чем они.
(Но это нужно проверить)
Использую в качестве шаблона xsl. А в качастве данных xml.
И да собираю в html на стороне клиента.

Плюсы:
+ менять xsl в разы удобнее чем html-текст в яваскрипте.
+ можно инклудить шаблоны
+ не нужно разбирать пришедший json, Все труды ложаться на xslt-процессор
+ представление от данных отделено как никогда

Минусы:
— не работает в konqueror
* тестов не проводил, но может быть в каком-то браузере оно работает не достаточно быстро. Задержек из-за xslt-процессора замечено не было.

(Если правильно подойти к кешированию xsl и xml, то получаем доп. бонус)
В dojo еще есть поддержка django templates language. Может быть удобно если хочется реюзать шаблоны между клиентом и сервером.
Sign up to leave a comment.

Articles