Я экспериментирую с созданием целого веб-приложения с использованием Node.js. Существует ли механизм шаблонов, аналогичный (например) шаблонизатору Django или тому подобное, который, по крайней мере, позволяет расширять базовые шаблоны?
Я только что узнал, что движок JavaScript V8 работает быстрее, чем Ruby, PHP и Python. Удивительно быстро для динамического языка. Однако медленнее, чем Java и C #.
Носредна
77
@Nosredna: Как Java может быть быстрее, чем что-либо ?! ;)
Даниэль Слооф
27
@Daniel Java на самом деле довольно быстр в наши дни, опережая все, кроме Ada, C и C ++, в тестах Shootout Debian.
Mentalikryst
20
Любой, кому наплевать на синтаксис, производительность и все остальное, кроме производительности, должен использовать Raphters (веб-фреймворк для C)
Пабло Б.
6
node.js не о языке. Все дело в дизайне и в том, как JS справляется с вводом-выводом, что замечательно. Вы можете сделать так, чтобы веб-фреймворки ruby работали быстро, если бы вы перепроектировали библиотеки IO.
июля
Ответы:
166
Посетите вики-страницу Node js modules. Они перечислили все шаблоны, поддерживающие node.js.
@ThomasPotaire Это устарело, потому что они предлагают вместо этого использовать поиск по npm.
inf3rno
52
Вы должны быть в состоянии использовать mustache.js, если он не работает, пришлите мне проблемы, и я исправлю их, потому что я все равно собираюсь использовать их в node.js.
Джейд довольно крутая. Я только начал использовать его, поэтому не могу говорить о его производительности, но мне нравится синтаксис. А встроенная поддержка в Express это плюс.
Брооф
3
производительность достаточна, шаблоны должны быть кэшированы в любом случае. Кроме того, не забывайте масштабировать по горизонтали, а не по вертикали, иначе вы можете вообще не использовать движок шаблонов и только некоторые функции / конкататы
tjholowaychuk
14
Все время появляются новые шаблоны.
underscore.js добавляет много функциональной поддержки программирования в js и имеет шаблоны.
Недурно для underscore.js. Потрясающая библиотека, я использую ее как для клиентской части, так и для работы с node.js. Их шаблонизатор основан на JS Micro Templating Engine Джона Резига ( ejohn.org/blog/javascript-micro-templating ), который я использовал много раз раньше. На этом этапе Afaik - ваш лучший вариант при работе с node.js.
Феликс Гейзендёрфер
2
Есть ли у кого-нибудь из них поддержка наследования?
Вы должны взглянуть на node-asyncEJS , который явно разработан для учета асинхронной природы node.js. Он даже позволяет асинхронные блоки кода внутри шаблона.
Вы можете попробовать без бороды (это вдохновлено сваркой / пластинами):
Например:
{ post:{ title:"Next generation templating: Start shaving!", text:"TL;DR You should really check out beardless!", comments:[{text:"Hey cool!"},{text:"Really gotta check that out..."}]}}
<h1>Next generation templating:Start shaving!</h1><p>TL;DR You should really check out beardless!</p><div><div class="comment"><p>Hey cool!</p></div><div class="comment"><p>Really gotta check that out...</p></div></div>
Пожалуйста, будьте более информативны в своем ответе о вашем коде и ссылке, на которую вы ссылались. См .: Как ответить
askmish
Было бы интересно, как на самом деле обрабатывать файл или заполнять переменные внутри узла
Джулиан Ф. Вейнерт
6
Я проделал некоторую работу над довольно полным портом языка шаблонов Django для проекта Simon Willisons djangode ( служебные функции для node.js, которые позаимствовали некоторые полезные концепции из Django).
Это совсем не похоже на шаблоны Django, поскольку у одного из шаблонов Django есть хорошая документация. EJS - это борьба, и вы в конечном итоге прочитаете его исходный код, просто чтобы понять, что вам доступно.
5
ВНИМАНИЕ: JinJs больше не поддерживается. Он все еще работает, но не совместим с последней версией Express.
Вы можете попробовать использовать Jinjs . Это порт Jinja, очень хорошая система шаблонов Python. Вы можете установить его с помощью npm следующим образом:
Google Closure Templates - это система шаблонов, изначально встроенная в JavaScript, и, казалось бы, естественная совместимость с NodeJS. Вот несколько инструкций по их интеграции.
Node.js не понимает DOM ... PURE использует DOM, но так как он делает из него строки. Это интересно исследовать. Извините за шум.
Mic
2
Существует порт движка шаблонов Django для JavaScript. Тем не менее, он не обновлялся в течение длительного времени, но он все еще может иметь достаточно функций.
Попробуйте Yajet тоже. ;-) Это новая версия, которую я только что выпустил вчера, но я использую ее некоторое время, и она стабильна и быстра (шаблоны скомпилированы для встроенной функции JS).
Он имеет IMO лучший синтаксис, возможный для механизма шаблонов, и богатый набор функций, несмотря на его небольшой размер кода (уменьшено до 8,5 КБ). У него есть директивы, которые позволяют вам вводить условные выражения, повторять массивы / хэши, определять повторно используемые компоненты шаблона и т. Д.
Интересная, милая работа мишу. Есть ли у него преимущество перед EJS?
trusktr
0
Я нашел hogan.js из Твиттера и рекомендовал Тим О'Рейли на его сайте. У меня нет лучшей практики, но я доверяю Твиттеру и О'Рейли. Ты должен попытаться...
Вы можете использовать dojox.dtl из DojoToolkit.org. Обратите внимание, что dojo 1.7 может хорошо работать на NodeJS и работать как библиотека на стороне сервера. Если вам интересно, я могу привести простой пример.
Ответы:
Посетите вики-страницу Node js modules. Они перечислили все шаблоны, поддерживающие node.js.
источник
Вы должны быть в состоянии использовать mustache.js, если он не работает, пришлите мне проблемы, и я исправлю их, потому что я все равно собираюсь использовать их в node.js.
http://github.com/janl/mustache.js
Я знаю, что это работает без DOM, потому что множество автономных приложений CouchDB используют его на сервере представления Spidermonkey.
источник
Если вам нравится haml, но вы хотите что-то еще, проверьте http://jade-lang.com для узла, я также написал haml.js :)
источник
Все время появляются новые шаблоны.
underscore.js добавляет много функциональной поддержки программирования в js и имеет шаблоны.
И только сегодня я слышал об этом: http://github.com/SamuraiJack/Shotenjin-Joosed
источник
Вы должны взглянуть на node-asyncEJS , который явно разработан для учета асинхронной природы node.js. Он даже позволяет асинхронные блоки кода внутри шаблона.
Вот пример формы документации:
источник
Вы можете попробовать без бороды (это вдохновлено сваркой / пластинами):
Например:
Ваш шаблон:
Вывод:
источник
Я проделал некоторую работу над довольно полным портом языка шаблонов Django для проекта Simon Willisons djangode ( служебные функции для node.js, которые позаимствовали некоторые полезные концепции из Django).
Смотрите документацию здесь .
источник
Я использую Twig с Symfony и теперь играю в node.js, поэтому я смотрю на https://github.com/justjohn/twig.js и https://github.com/paularmstrong/swig , которые вы вероятно, нравится, если вы используете Django.
источник
Если вы ищете минималистский подход к шаблонам, вы можете проверить JSON Template .
Более полнофункциональная альтернатива - EJS . Это немного больше похоже на то, что вы получите от Джанго.
Ваш пробег может варьироваться для каждого из них - они предназначены для среды браузера Javascript, а не для Node.js.
источник
ВНИМАНИЕ: JinJs больше не поддерживается. Он все еще работает, но не совместим с последней версией Express.
Вы можете попробовать использовать Jinjs . Это порт Jinja, очень хорошая система шаблонов Python. Вы можете установить его с помощью npm следующим образом:
в template.tpl:
в вашем template.js:
Выход будет:
Мы активно его разрабатываем, скоро должна появиться хорошая документация.
источник
haml - хороший выбор для node.js
http://github.com/creationix/haml-js
Haml-JS
HTML
источник
Я слышал хорошие вещи о {пыли} http://akdubya.github.com/dustjs/#dust
источник
Попробуйте "vash" - asp.net mvc как синтаксис бритвы для node.js
https://github.com/kirbysayshi/Vash
также оформить заказ: http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx
источник
Google Closure Templates - это система шаблонов, изначально встроенная в JavaScript, и, казалось бы, естественная совместимость с NodeJS. Вот несколько инструкций по их интеграции.
источник
Вы пробовали PURE ?
Если вы попробуете, не стесняйтесь сообщать о любых проблемах, с которыми вы можете столкнуться на форуме.
Хотя он изначально был разработан для браузера, он хорошо работает с Jaxer и Rhino.
Я еще не знаю node.js, но если вы можете кэшировать некоторые JS и функции в памяти, скорость должна быть еще более впечатляющей.
источник
Существует порт движка шаблонов Django для JavaScript. Тем не менее, он не обновлялся в течение длительного времени, но он все еще может иметь достаточно функций.
http://code.google.com/p/jtl-javascript-template/
источник
Попробуйте Yajet тоже. ;-) Это новая версия, которую я только что выпустил вчера, но я использую ее некоторое время, и она стабильна и быстра (шаблоны скомпилированы для встроенной функции JS).
Он имеет IMO лучший синтаксис, возможный для механизма шаблонов, и богатый набор функций, несмотря на его небольшой размер кода (уменьшено до 8,5 КБ). У него есть директивы, которые позволяют вам вводить условные выражения, повторять массивы / хэши, определять повторно используемые компоненты шаблона и т. Д.
источник
Я нашел hogan.js из Твиттера и рекомендовал Тим О'Рейли на его сайте. У меня нет лучшей практики, но я доверяю Твиттеру и О'Рейли. Ты должен попытаться...
источник
Вот хорошая оценка нескольких двигателей http://engineering.linkedin.com/frontend/client-side-templating-throwdown-mustache-handlebars-dustjs-and-more
источник
Честно говоря, лучший и самый простой шаблонизатор для Node.js - это (IMHO) Plates ( https://github.com/flatiron/plates ). Вы также можете проверить платформу Flatiron MVC для Node.js ( http://flatiron.org ).
источник
Вы можете использовать dojox.dtl из DojoToolkit.org. Обратите внимание, что dojo 1.7 может хорошо работать на NodeJS и работать как библиотека на стороне сервера. Если вам интересно, я могу привести простой пример.
источник