Express需要类似Mustache的模板引擎吗?

4
有没有基于Mustache或类似语法的Express(node.js)模板引擎?我找到的只有haml、jade、ejs、jquery templates和一个基于CoffeeScript的(我写纯JS)。我想写“普通”的html,所以只有ejs和jqtpl适合。我已经在backbone中使用mustache,因此最好也在Node.js的服务器端使用它。

Hogan.js是Express的mustache包装器,只需在Express应用程序生成器中使用-h标志。 - Muhammad Umer
8个回答

7
我刚刚偶然看到了这个古老的帖子,但没有人提到consolidate.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);

视图目录中的index.html文件:
<html>
  <head><title>Some CMS</title></head>
  <body>
    <h1>Mustache</h1>
    <p>What do you say?</p>
    <p>{{test}}</p>
  </body>
</html>

5

5
您可以按照Express手册的说明,将Mustache作为呈现引擎添加进去:

视图文件名采用“ <name>. <extension>”的形式,其中<name>是将要被调用的模块名称。例如,视图布局.ejs 将告诉视图系统调用'ejs'模块,被加载的模块必须导出方法exports.compile(str, options)并返回一个Function以符合Express规定。

编辑:

Mustache手册的使用中,有如下快速的示例:

以下是使用mustache.js的快速示例:

var view = {
  title: "Joe",
  calc: function () {
    return 2 + 4;
  }
};

var output = Mustache.render("{{title}} spends {{calc}}", view);

在这个例子中,Mustache.render函数有两个参数:1)mustache模板和2)一个包含渲染模板所需数据和代码的视图对象。
从上面的内容可以猜测你只需要导出Mustache.render函数,但我没有测试过。用作数据的对象字面量看起来是一样的,但如果它们确实不同,你可能只需要将Mustache.render包装在一个格式化正确的函数中。
编辑:Xomby的包装器链接包含了如何为express包装handlebars的示例,Mustache应该类似。

2
这是一个使用NodeJS、ExpressJS和MustacheJS模板引擎的工作示例/教程:

http://devcrapshoot.com/javascript/nodejs-expressjs-and-mustachejs-template-engine

您可以像平常一样构建完整的网页,将mustacheJS字段放在需要的位置。使用express路由到页面,使用node fs.readFileSync();获取html文件,使用mustache更新页面上的数据,然后将其输出到客户端。
这很不错。希望它有所帮助!
-A-

1

你已经尝试过stache了吗?它已经不再维护,但你可以跟随一些链接获取更多最新的东西。


1
我发现了Handlebars.js,它是Mustache模板系统/语言的扩展。
而且有一个非常简单的包装器可以与Express一起使用。

1

0

看看 Handlerbars。"Handlebars 提供了必要的能力,让您无需感到沮丧地有效地构建语义化模板。 Handlebars 在很大程度上与 Mustache 模板兼容。在大多数情况下,可以将 Mustache 替换为 Handlebars 并继续使用当前的模板。完整的详细信息可以在 这里 找到" - Handlerbars


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接