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

问题描述 投票:0回答:8

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

我能找到的只是

haml
jade
ejs
jquery templates
和一个基于 CoffeeScript 的(我编写纯 JS)。

我想编写“普通”html,因此只有

ejs
jqtpl
适合。我已经将
mustache
backbone
一起使用,因此最好在服务器端与 Node.js 一起使用它

node.js express mustache
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);

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>

5
投票

您可以按照 Express 手册添加 Mustache 作为渲染引擎:

查看文件名采用“.”形式,其中是所需模块的名称。例如,视图layout.ejs将告诉视图系统>require(‘ejs’),正在加载的模块必须导出方法exports.compile(str, >options),并返回一个符合Express的Function。

编辑: 来自小胡子手册的用法:

下面是如何使用 Mustache.js 的快速示例:

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

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

在此示例中,Mustache.render 函数采用两个参数:1) Mustache >template 和 2) 包含渲染 >template 所需的数据和代码的视图对象。

从上面我怀疑你可以只导出 Mustache.render,但我还没有测试过。用作数据的对象文字看起来相同,但如果它们确实不同,您可能只需将 Mustache.render 包装在正确格式化它的函数中即可。

编辑:Xomby 的包装器链接包含如何包装 Express 车把的示例,Mustache 应该类似。


5
投票

尝试Hogan.js

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


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
投票

当然,最好的方法是这里的帖子:

http://iamtherockstar.com/blog/2011/11/21/using-mustache-templates-express-apps/

到目前为止,这对我来说非常有效。 我发现的唯一问题是没有在视图的根路径上使用部分。 例如 view/partials 中的部分 - 默认情况下引擎仅将部分视为视图。 如果你弄清楚了请告诉我!


0
投票

查看处理程序栏。 “ Handlebars 提供了必要的功能,让您可以轻松有效地构建语义模板。 Handlebars 与 Mustache 模板很大程度上兼容。在大多数情况下,可以用 Handlebars 替换 Mustache 并继续使用当前的模板。完整的详细信息可以在这里“ - 车把

© www.soinside.com 2019 - 2024. All rights reserved.