Как стать автором
Обновить

Комментарии 33

Можете добавить графики сравнения производительности с dustjs и handlebars?
Скажу честно, графики я добавил лишь потому, что попросили. А так не вижу смысла сейчас сравнивать производительность. Но приму ваше сообщение на заметку. Просто еще в разных шаблонизаторах разные методы, по этому вывод переменной или обычных условий по скорости будут одинаковые, а вот, например, в одном шаблонизаторе вывод цикла через стандартные способы (forEach, for), а в других, как у меня, через специальный тег — тут уже неправильно сравнивать.
Что, серьезно? Мало шаблонизаторов для ноды?
Если не затруднит, покажите мне шаблонизатор, у которого синтаксис похож на синтаксис smarty? Я вот что-то не нашел. Спросите, почему именно синтаксис smarty? Отвечу: допустим, у меня много проектов с использованием smarty, и я хочу их портировать на node.js. Что лучше: использовать движок с другим синтаксисом и потом заморачиваться с шаблонами, или взять мой?
В мире php многие переехали на Twig, есть две реализации на js:
github.com/schmittjoh/twig.js
github.com/justjohn/twig.js

Случай портирования проектов php+smarty на node.js очень редки, и да, в этих ситуациях выгодно.
В любом случае придется переписывать все фильтры, функции и блоки. У вас, кстати, есть такое API?
А раз нужно переписывать все фильтры, почему не воспользоваться новыми шаблонизаторами?
Сейчас есть то, что есть. Фильтры и прочие вкусные штуки также будут. Этот шаблонизатор далеко не «Ну что, опять?». Он не похож на другие, и у него свои фичи.
А какие, если не секрет, в отличие от уже упомянутых dot, twig, handlebars, dustjs, jade и прочих? Ну, кроме синтаксиса «как в smarty», который отличается от twig, похоже, в основном наличием знака "$" перед переменными?
И, кстати, я правильно понимаю, что этот шаблонизатор нельзя использовать на клиенте?
Синтаксис, считаю, одно из самых главных различий между шаблонизаторами. Потом сам код довольно шустрый и не требует каких-либо компонентов. И да, шаблонизатор нельзя использовать на клиенте. Раз язык серверный, то и шаблонизатор серверный.
Оооо, батенька, да вас понесло :]
И какой серверный язык, вы используете, если не секрет?
Вы о чем сейчас? Я о node.js
NodeJS — это всего лишь серверная реализация JavaScript, основанная на V8.

P.S. Даже сейчас, вы транслируете код в очень примитивную функцию, которую можно использовать как сервере, так и на клиенте. Ну и заставить этот код работать на клиенте, тоже не трудно.
Может это у вас мешают всё в лапшу, но у меня другой подход :) И я разграничиваю клиентский и серверный языки.
Okay.gif
Как я ошибался в своих суждениях :D
Подскажите, а заработает ли он вместе с express.js и например nap (https://github.com/craigspaeth/nap)? К сожалению, сложно заставить express.js работать нормально НЕ с дефолтным jade и в тоже время, что бы он не кофликтовал с различным аддонами, которые встраиваются в jade
Был вопрос на github.com о примерах работы NodeSmarty и express.js в паре: github.com/lampaa/NodeSmarty/issues/2 Больше пока ничего не могу сказать.
Вот уже не первая статья о создание шаблонизатора на NodeJS и все совершают одну и туже ошибку, никто не заботиться о разработчике, который этим будет пользоваться, где вывод ошибок compile & run-time (file, line) и юнит тесты?

P.S. Но желаю удачи :]
О, это не ошибка, я прекрасно понимаю, как неудобно без средств отладки. Но сейчас нацелен на наращивание функционала, а уж потом на средства отладки. Конечно, хорошо бы и то и то делать, но но :) Не получается так. Спасибо!)
Охо-хо, я даже не знаю как вам объяснить, что это тупик, но время рассудит.
Значит нужно будет пересмотреть своё решение :)
Главный вопрос — зачем?
Ведь от смарти нафталином несет за милю, есть гараздо более удобные и современные шаблонизаторы с поддержкой наследования и приятным глазу синтаксисом например мусташ или джейд.
Мне вот больше синтаксис smarty нравится. Приятный, легкий (как для разработчика, так и дизайнера).
Вот про приятный, легкий для дизайнера можно подробнее? :)
Понятный синтаксис, море различных ситуаций, изъеденных вдоль и поперек. Под дизайнером имелось ввиду верстальщика, перепутал :)
я ждал подобного комментария :)

Наткнулся на jade когда мне нужно было сверстать кучку статичных страниц (его было проще всего прикрутить к PhpStorm как «компилятор» для статики, да и плагин поддержки jade тоже вестма сносный имеется). в общем с тех пор не могу смотреть на верстку plain html без боли, jade удобен и отказаться от него мне будет сложно. Короче, я уже фанат jade с первой ложки, а ведь я его еще даже не распробовал толком, дай бог чтобы 10% возможностей освоил…

P.S.: naltatis.github.com/jade-syntax-docs/ первая доза бесплатно :D
нафталином — так и пишите PHP :)
Для быстрого портирования проектов php на node.js.
Немного придирок

сейчас в мастере это: github.com/lampaa/NodeSmarty/blob/ba6fc41e61a9b1edd09b44df0e8ab1f9726ae811/index.js

строка 714 — нет var (возможен баг в разных объектах)
строка 729 — аналогично 714

В циклах вида for key in obj нет проверок obj.hasOwnProperty(key). Может привести к неожиданным багам

Ну и в конце концов — что за практика пошла писать все в одном файле? Попробуйте разделить логику (отдельно парсер, отдельно компилятор, отдельно рендерер и т.п.)
и console.log бы лучше убрать из модуля) используйте модуль аля debug
Из документации:

Все шаблоны при использовании проходят дополнительную обработку — компиляцию. Шаблон компилируется в чистый (native) JavaScript код, причем как компиляция, так и исполнение кода являются самыми быстрыми при сравнении с остальными шаблонизаторами!


JUST и EJS, а тем более Jade не являются самыми быстрыми шаблонизаторами. JUST это попытка сделать улучшенный EJS, однако она зашла в тупик из-за невозможности сделать доступ к переменный без which или префиксов типа this.varName. Для такого случая нужна прекомпилция всего кода. Поэтому родился ECT. Он наследуют синтаксис eco но намного быстрее и предлагает широкий функционал и язык изобретать/учить не надо т.к. используется CoffeeScript. Попробуйте протестировать скорость этим бенчмарком. Там учтен приближенный к среднему объем текста и тестируются отдельно варианты с эскейпингом и без.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории