Ответ 1
Просмотрите страницу wiki wiki Node js. Они перечислили все механизмы шаблонов, поддерживающие node.js.
Я экспериментирую с созданием всего веб-приложения с помощью Node.js. Есть ли механизм шаблонов, похожий на (например) механизм шаблона Django или тому подобное, который по крайней мере позволяет расширять базовые шаблоны?
Просмотрите страницу wiki wiki Node js. Они перечислили все механизмы шаблонов, поддерживающие node.js.
Вы должны иметь возможность использовать mustache.js, если он не работает, отправьте мне проблемы, и я исправлю это, потому что я собираюсь использовать их в node.js в любом случае.
http://github.com/janl/mustache.js
Я знаю, что он работает без DOM, потому что куча автономных приложений CouchDB использует его на сервере просмотра Spidermonkey.
Если вам нравится haml, но хотите что-то еще лучше проверить http://jade-lang.com для node, я написал haml.js: )
Есть новые шаблоны шаблонов все время.
underscore.js добавляет много поддержки функционального программирования js и имеет шаблоны.
И только сегодня я услышал об этом: http://github.com/SamuraiJack/Shotenjin-Joosed
Вы должны взглянуть на node-asyncEJS, который явно предназначен для учета асинхронного характера node.js. Он даже позволяет асинхронные кодовые блоки внутри шаблона.
Вот пример формы документации:
<html>
<head>
<% ctx.hello = "World"; %>
<title><%= "Hello " + ctx.hello %></title>
</head>
<body>
<h1><%? setTimeout(function () { res.print("Async Header"); res.finish(); }, 2000) %></h1>
<p><%? setTimeout(function () { res.print("Body"); res.finish(); }, 1000) %></p>
</body>
</html>
Вы можете попробовать beardless (он вдохновлен сваркой/пластинами):
Например:
{ 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 data-template="post.title"></h1>
<p data-template="post.text"></p>
<div>
<div data-template="post.comments" class="comment">
<p data-template="post.comments.text"></p>
</div>
</div>
Вывод:
<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>
Я проделал определенную работу над довольно полным портом языка шаблонов Django для Simon Willisons проект djangode (функции Utilities для node. js, которые занимают некоторые полезные понятия из Django).
Смотрите документацию здесь.
Я использую Twig с Symfony и теперь занимаюсь в node.js, поэтому я смотрю https://github.com/justjohn/twig.js и https://github.com/paularmstrong/swig, который вам, вероятно, понравится, если вы используете django.
Если вы ищете минималистский подход к шаблонам, вы можете проверить Шаблон JSON.
Более полнофункциональной альтернативой является EJS. Это немного больше похоже на то, что вы получите от Django.
Ваш пробег может отличаться для каждого из них - они предназначены для среды Javascript браузера, а не Node.js.
ПРЕДУПРЕЖДЕНИЕ: JinJs больше не поддерживается. Он по-прежнему работает, но не совместим с последней версией выражения.
Вы можете попробовать использовать jinjs. Это порт Jinja, очень хорошая система шаблонов Python. Вы можете установить его с помощью npm следующим образом:
npm install jinjs
в template.tpl:
I say : "{{ sentence }}"
в файле template.js:
jinjs = require('jinjs');
jinjs.registerExtension('.tpl');
tpl = require('./template');
str = tpl.render ({sentence : 'Hello, World!'});
console.log(str);
Выход будет:
I say : "Hello, World!"
Мы активно развиваем его, хорошая документация должна появиться довольно скоро.
Я слышал хорошие вещи о {dust} http://akdubya.github.com/dustjs/#dust
Попробуйте "vash" - asp.net mvc, как синтаксис бритвы для node.js
https://github.com/kirbysayshi/Vash
также checkout: http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx
// sample
var tmpl = vash.compile('<hr/>@model.a,@model.b<hr/>');
var html = tmpl({"a": "hello", "b": "world"});
res.write(html);
Шаблоны Google Closure - это система шаблонов изначально-JavaScript и, по-видимому, естественная совместимость с NodeJS. Вот некоторые инструкции для их интеграции.
haml - хороший выбор для node.js
http://github.com/creationix/haml-js
Haml-JS
!!! XML
!!! strict
%html{ xmlns: "http://www.w3.org/1999/xhtml" }
%head
%title Sample haml template
%body
.profile
.left.column
#date= print_date()
#address= current_user.address
.right.column
#email= current_user.email
#bio= current_user.bio
HTML
<?xml version='1.0' encoding='utf-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Sample haml template
</title></head><body><div class="profile"><div class="left column"><div id="date">January 1, 2009
</div><div id="address">Richardson, TX
</div></div><div class="right column"><div id="email">[email protected]
</div><div id="bio">Experienced software professional...
</div></div></div></body></html>
Вы попробовали PURE?
Если вы попробуете, не стесняйтесь публиковать любые проблемы, с которыми вы можете столкнуться на форуме .
В то время, когда он был специально разработан для браузера, он хорошо работает с Jaxer и Rhino.
Я еще не знаю node.js, но если вы можете кэшировать некоторые JS и функции в памяти, скорость должна быть еще более впечатляющей.
В JavaScript используется порт механизма шаблонов Django. Однако его не обновляли в течение длительного времени, но он все еще может иметь достаточно возможностей.
Попробуйте Yajet.;-) Это новый, который я только что выпустил вчера, но я использую его какое-то время, и он стабилен и быстр (шаблоны скомпилированы для собственной JS-функции).
У ИМО есть лучший синтаксис для механизма шаблонов и богатый набор функций, несмотря на его небольшой размер кода (8.5K). Он имеет директивы, которые позволяют вводить условные обозначения, перебирать массивы/хэши, определять повторно используемые компоненты шаблонов и т.д.
Я нашел hogan.js из Twitter и рекомендовал Тим О'Рейли на своем сайте. У меня нет лучшей практики, но я доверяю Twitter и O'Reilly. Вы должны попробовать...
Здесь хорошая оценка нескольких двигателей 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 of DojoToolkit.org. Обратите внимание, что dojo 1.7 может работать на NodeJS и выполнять роль серверной библиотеки. Если вам интересно, я могу привести простой пример.