我正在尝试使用Node.js构建一个完整的web应用程序。是否有一个模板引擎类似于(例如)Django模板引擎或类似的,至少允许你扩展基本模板?
当前回答
我从Twitter上找到了hogan.js, Tim O'Reilly在他的网站上推荐了hogan.js。我在这方面没有最佳实践,但我相信推特和奥莱利。你应该试试……
其他回答
你应该能够使用mustache.js,如果它不工作,请把问题发给我,我会把它修复,因为我即将在node.js中使用它们。
http://github.com/janl/mustache.js
我知道它可以在没有DOM的情况下工作,因为很多CouchDB独立应用程序在Spidermonkey视图服务器中使用它。
你尝试过PURE吗?如果你尝试过,可以随时在论坛上发表你可能遇到的问题
虽然它主要是为浏览器设计的,但它与Jaxer和Rhino配合得很好。
我还不知道node.js,但如果你能在内存中缓存一些JS和函数,速度应该会更令人印象深刻。
你应该看一看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>
谷歌的闭包模板是一个原生javascript模板系统,看起来很适合NodeJS。下面是对它们进行积分的一些说明。
警告:JinJs不再被维护。它仍在工作,但与最新版本的express不兼容。
你可以试着用jinj。它是Jinja的一个端口,一个非常好的Python模板系统。你可以像这样用npm安装它:
npm install jinjs
在模板。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!"
我们正在积极开发,一个好的文档应该很快就会出来。