© 2012-2020
赣ICP备15001664号

Node.js使用 Mustache.js做模板

From:http://www.oschina.net/question/12_21806


为了让 Node.js 输出更多的 HTML 元素,我们可以借助一些 html 模板引擎,例如 Mustache。


首先在 Node.js 中安装 Mustache:


npm install mustache


这会创建一个目录:node_modules\mustache


然后我们可以编写代码:


    var mustache = require(‘./node_modules/mustache/mustache’);

function helloworld(response)
{
console.log(‘request recieved at ‘ + (new Date()).getTime());
response.writeHead(200, {‘Content-Type’: ‘text/html’});
var template = ‘<h1>Test</h1><p></p>’;
var model = {helloworld:’Hello World’};
response.end(mustache.to_html(template,model));
}

exports.helloworld = helloworld;


这段代码使用 to_html 函数生成网页,来看看执行效果:



但这看起来很不爽,我们希望模板独立于控制器之外,例如下面的模板:


    <html>
<head>
<title>My first template</title>
</head>
<body>
<h1>Test</h1>
<p></p>
</body>
</html>

文件名是 helloworld.html.


为了使用这个模板文件,我们可以这样编写代码:


    var mustache = require(‘./node_modules/mustache/mustache’);
var fs = require(‘fs’);

function helloworld(response)
{
console.log(‘request recieved at ‘ + (new Date()).getTime());
fs.readFile("./helloworld.html",function(err,template) {
response.writeHead(200, {‘Content-Type’: ‘text/html’})
response.write(mustache.to_html(template.toString(), {helloworld:"Hello World"}))
response.end()
});
}

exports.helloworld = helloworld;

运行结果如下:



怎样,简单很多吧?:)