Express的Mustache(类似)模板引擎?

Xom*_*mby 4 node.js mustache express

Express(node.js)的模板引擎是基于Mustache还是使用类似的语法?

所有我能找到的是haml,jade,ejs,jquery templates和一个基于CoffeeScript的(我写纯JS).

我想写"正常"的HTML,所以才ejsjqtpl将适合.我已经使用过mustache,backbone所以最好也在Node.js的服务器端使用它

mts*_*tsr 5

您可以按照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应该是类似的.


Don*_*ark 5

尝试 Hogan.js http://twitter.github.com/hogan.js/

我认为这就是 Twitter 和 LinkedIn 在生产中使用的方法。


小智 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)