用于Express的胡须(类似)模板引擎?
Express(node.js)是否有一个基于Mustache的模板引擎,或者使用类似的语法?
所有我能find的是haml
, jade
, ejs
, jquery templates
和一个基于CoffeeScript(我写的纯JS)。
我想写“正常”的HTML,所以只有ejs
和jqtpl
会适合。 我已经使用backbone
mustache
,所以最好也在服务器端使用Node.js
您可以按照Express手册将Mustache添加为渲染引擎:
查看文件名的格式为“。”,其中是需要的模块名称。 例如,视图layout.ejs将告诉视图系统> require('ejs'),被加载的模块必须导出方法exports.compile(str,> options),并返回一个Function以符合Express。
编辑:从使用下的胡子手册 :
下面是如何使用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,但我没有testing它。 用作数据的对象文字看起来是一样的,但是如果它们碰巧不一样,那么你可以把Mustache.render包装成一个正确格式的函数。
编辑:Xomby的包装链接包含一个如何包装的句柄明确的例子,胡须应该是类似的。
试试Hogan.js http://twitter.github.com/hogan.js/
我认为这是Twitter和LinkedIn在生产中所使用的。
只是偶然发现了这个古老的线索,但没有人提到过整合.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>
下面是使用NodeJS,ExpressJS和MustacheJS模板引擎的工作示例/教程:
http://devcrapshoot.com/javascript/nodejs-expressjs-and-mustachejs-template-engine
您可以像平常一样build立一个完整的网页,将mustacheJS字段放在您喜欢的位置。 使用express来路由到页面,使用节点fs.readFileSync(); 获取html文件,使用胡须更新页面上的数据,然后吐出到客户端。
它很整洁。 我希望它有帮助!
-一个-
你已经试过了吗? 它不再被维护,但你可以按照一些链接,得到更多的东西..
我发现Handlebars.js是Mustache模板系统/语言的扩展。
有一个非常简单的包装与Express使用它。
当然,最好的办法是这里的post:
http://iamtherockstar.com/blog/2011/11/21/using-mustache-templates-express-apps/
到目前为止,这对我来说很好。 我发现的唯一的问题是不使用视图根path的部分。 例如,view / partials中的partials – 默认情况下,引擎仅查找partials。 让我知道,如果你知道这一点!
看看Handlerbars。 “把手提供了必要的function,让您可以有效地构build语义模板,而不会感到沮丧。把手与小胡子模板大体相容,在大多数情况下,可以用小把手交换胡子,并继续使用当前的模板。 “ – 把手