Xom*_*mby 4 node.js mustache express
Express(node.js)的模板引擎是基于Mustache还是使用类似的语法?
所有我能找到的是haml
,jade
,ejs
,jquery templates
和一个基于CoffeeScript的(我写纯JS).
我想写"正常"的HTML,所以才ejs
和jqtpl
将适合.我已经使用过mustache
,backbone
所以最好也在Node.js的服务器端使用它
您可以按照Express手册将Mustache添加为渲染引擎:
查看文件名采用"."形式,其中是模块的名称>将是必需的.例如,视图layout.ejs将告诉视图系统> require('ejs'),正在加载的模块必须导出方法exports.compile(str,> options),并返回一个符合Express的函数.
编辑:从使用情况下的胡子手册:
下面是如何使用mustache.js的快速示例:
var view = {
title: "Joe",
calc: function () {
return 2 + 4;
}
};
var output = Mustache.render("{{title}} spends {{calc}}", view);
Run Code Online (Sandbox Code Playgroud)
在此示例中,Mustache.render函数采用两个参数:1)胡子>模板和2)包含呈现>模板所需的数据和代码的视图对象.
从上面我怀疑你可以导出Mustache.render,但我还没有测试过.用作数据的对象文字看起来是一样的,但如果它们确实不同,你可能只需将Mustache.render包装在一个正确格式化的函数中.
编辑:Xomby的包装链接包含如何为快递包装把手的示例,Mustache应该是类似的.
小智 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);
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)