Express (node.js) 是否有基于 Mustache 或使用类似语法的模板引擎?
我能找到的只是
haml
、jade
、ejs
、jquery templates
和一个基于 CoffeeScript 的(我编写纯 JS)。
我想编写“普通”html,因此只有
ejs
和 jqtpl
适合。我已经将 mustache
与 backbone
一起使用,因此最好在服务器端与 Node.js 一起使用它
刚刚偶然发现了这个古老的线程,但没有人提到 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>
您可以按照 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 应该类似。
尝试Hogan.js
我认为这是 Twitter 和 LinkedIn 在生产中使用的方法。
这是使用 NodeJS、ExpressJS 和 MustacheJS 模板引擎的工作示例/教程:
http://devcrapshoot.com/javascript/nodejs-expressjs-and-mustachejs-template-engine
您可以像平常一样构建一个完整的网页,将 MustacheJS 字段放置在您喜欢的位置。 使用express路由到页面,使用node fs.readFileSync();要获取html文件,请使用mustache更新页面上的数据,然后将其吐出给客户端。
有点整洁。 我希望它有帮助!
-A-
你已经尝试过stache了吗?它不再维护,但您可以点击一些链接并获取更多最新内容..
我找到了Handlebars.js,它是 Mustache 模板系统/语言的扩展。
还有一个非常简单的包装器可以与 Express 一起使用。
当然,最好的方法是这里的帖子:
http://iamtherockstar.com/blog/2011/11/21/using-mustache-templates-express-apps/
到目前为止,这对我来说非常有效。 我发现的唯一问题是没有在视图的根路径上使用部分。 例如 view/partials 中的部分 - 默认情况下引擎仅将部分视为视图。 如果你弄清楚了请告诉我!