Express(node.js)的模板引擎是基于Mustache还是使用类似的语法?
我能找到的只有haml
,jade
,ejs
,jquery templates
,还有一个基于CoffeeScript(我写的是简单的JS)。
我想写“普通”html,因此只有ejs
和jqtpl
才适合。我已将mustache
与backbone
一起使用,因此最好在服务器端使用Node.js
答案 0 :(得分:5)
您可以按照the Express manual:
添加Mustache作为渲染引擎查看文件名采用“。”形式,其中是模块的名称>将是必需的。例如,视图layout.ejs将告诉视图系统> require('ejs'),正在加载的模块必须导出方法exports.compile(str,> options),并返回一个符合Express的函数。
编辑: 来自使用情况下的the Mustache manual:
以下是如何使用mustache.js的简单示例:
var view = {
title: "Joe",
calc: function () {
return 2 + 4;
}
};
var output = Mustache.render("{{title}} spends {{calc}}", view);
在此示例中,Mustache.render函数采用两个参数:1)小胡子>模板和2)包含呈现>模板所需的数据和代码的视图对象。
从上面我怀疑你可以导出Mustache.render,但我还没有测试过。用作数据的对象文字看起来是一样的,但如果它们确实不同,你可以将Mustache.render包装在一个正确格式化的函数中。
编辑:Xomby的包装器链接包含如何为快递包装把手的示例,Mustache应该是类似的。
答案 1 :(得分:5)
偶然发现了这个古老的线索,但没有人提到mergeate.js,这似乎是Express 3下的“正确”方式(参考http://expressjs.com/faq.html)。它还提供了一种切换/试验模板系统的简便方法。
这是一个简单的例子 - http://invitingthebell.com/2012/12/24/mustache-templates-in-express-3-0/。
代码,如果它消失了:
var express = require('express')
, cons = require('consolidate')
, app = express();
// assign the mustache engine to .html files
app.engine('html', cons.mustache);
// set .html as the default extension
app.set('view engine', 'html');
app.set('views', __dirname + '/views');
// test mustache
app.get('/', function(req, res){
var viewdata = { 'test' : 'Hey now.'};
res.render('index', viewdata);
});
app.listen(3000);
views目录中的index.html文件:
<html>
<head><title>Some CMS</title></head>
<body>
<h1>Mustache</h1>
<p>What do you say?</p>
<p>{{test}}</p>
</body>
</html>
答案 2 :(得分:4)
尝试Hogan.js http://twitter.github.com/hogan.js/
我认为这是Twitter和LinkedIn在制作中的用途。
答案 3 :(得分:2)
以下是使用NodeJS,ExpressJS和MustacheJS模板引擎的工作示例/教程:
http://devcrapshoot.com/javascript/nodejs-expressjs-and-mustachejs-template-engine
您可以像往常一样构建完整的网页,将mustacheJS字段放在您喜欢的位置。使用express路由到页面,使用node fs.readFileSync();要获取html文件,请使用小胡子更新页面上的数据,然后将其吐出到客户端。
它有点整洁。我希望它有所帮助!
-A -
答案 4 :(得分:1)
您是否已尝试stache?它已不再维护,但您可以关注一些链接并获取更多近期内容..
答案 5 :(得分:1)
我发现Handlebars.js是Mustache模板系统/语言的扩展。
在Express中使用它有一个非常简单的wrapper。
答案 6 :(得分:1)
当然,最好的方法是点击这里:
http://iamtherockstar.com/blog/2011/11/21/using-mustache-templates-express-apps/
到目前为止,这对我来说非常有用。我发现的唯一问题是不在视图的根路径上使用partials。例如,视图/部分中的部分 - 默认情况下,引擎仅将部分视为视图。如果你搞清楚了,请告诉我!
答案 7 :(得分:0)
查看Handlerbars。 “Handlebars提供了必要的功能,让您可以有效地构建语义模板而不会受挫。 把手很大程度上与Mustache模板兼容。在大多数情况下,可以将Mustache替换为Handlebars并继续使用当前模板。完整的详细信息可以在here“ - Handlebars
找到