我正在尝试使用Node.js构建整个Web应用程序。是否有类似于(例如)Django模板引擎之类的模板引擎或至少允许您扩展基本模板的类似引擎?
我正在尝试使用Node.js构建整个Web应用程序。是否有类似于(例如)Django模板引擎之类的模板引擎或至少允许您扩展基本模板的类似引擎?
Answers:
查看Node js modules Wiki页面。他们列出了所有支持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的异步特性而设计的。它甚至允许模板内的异步代码块。
这是文档的示例:
<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>
你可以尝试无胡子(它受焊缝/板的启发):
例如:
{ 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>
我已经为Simon Willisons djangode项目的Django模板语言的一个相当完整的端口做了一些工作(node.js的实用程序功能借鉴了Django的一些有用概念)。
请参阅此处的文档。
我用树枝Symfony和我现在在node.js的涉足,所以我期待在https://github.com/justjohn/twig.js和https://github.com/paularmstrong/swig,你会可能就像您使用django。
如果您正在寻找模板的极简主义方法,则可以查看JSON Template。
功能更全面的替代方法是EJS。它与您从Django获得的东西有点相似。
每种情况下,您的里程可能会有所不同-它们是针对浏览器Javascript环境而非Node.js设计的。
警告:不再维护JinJs。它仍在工作,但与最新版本的express不兼容。
您可以尝试使用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!"
我们正在积极开发它,一个好的文档应该很快就会出现。
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">tim@creationix.com
</div><div id="bio">Experienced software professional...
</div></div></div></body></html>
我听说过有关{dust}的好消息http://akdubya.github.com/dustjs/#dust
尝试“ vash”-asp.net mvc像node.js的razor语法
https://github.com/kirbysayshi/Vash
还可以结帐: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);
Django模板引擎的一个端口可以连接JavaScript。但是,它已经很长时间没有更新,但它可能仍然具有足够的功能。
也尝试Yajet。;-)这是我昨天发布的一个新版本,但是我已经使用了一段时间,并且它稳定且快速(模板已编译为本地JS函数)。
它具有IMO最佳的模板引擎语法,并且具有丰富的功能集,尽管其代码量很小(最小8.5K)。它具有允许您引入条件,迭代数组/哈希,定义可重用模板组件等的指令。
老实说,Node.js最好,最简单的模板引擎是(IMHO)Plates(https://github.com/flatiron/plates)。您可能还想查看Node.js的Flatiron MVC框架(http://flatiron.org)。