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

时间:2012-01-16 14:43:53

标签: node.js express mustache

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

我能找到的只有hamljadeejsjquery templates,还有一个基于CoffeeScript(我写的是简单的JS)。

我想写“普通”html,因此只有ejsjqtpl才适合。我已将mustachebackbone一起使用,因此最好在服务器端使用Node.js

8 个答案:

答案 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

找到