使用节点中的mustache.js从视图中分离数据

时间:2011-07-18 21:20:24

标签: node.js mustache

我想在节点中使用mustache.js将模板与数据分开...如果可能的话,使用fs.readFile并不明显。有什么想法?

我使用data.js作为数组模型,使用helloworld.html作为模板

var mustache = require('mustache');
var fs = require('fs');
var http = require('http');

http.createServer(function (req, res) {
  console.log('request recieved at ' + (new Date()).getTime());
  fs.readFile('./data.js', encoding='utf8',function(err, data) {
     model2 = data;
     console.log(model2);  //logs the data.js as expected
  });
  fs.readFile('./helloworld.html', function(err, template) {
    res.writeHead(200, {'Content-Type': 'text/html'});
  res.end(mustache.to_html(template.toString(),model2));  //model2 is not being passed in
  });
}).listen(8081);

1 个答案:

答案 0 :(得分:0)

您可以尝试使用jinjs。它是Jinja的一个端口,是一个非常好的Python模板系统。你可以用这样的npm安装它:

npm install jinjs

在template.tpl中:

I say : "{{ sentence }}"
你的template.js中的

jinjs = require('jinjs');
jinjs.registerExtension('.tpl');
tpl = require('./template');
str = tpl.render ({sentence : 'Hello, World!'});
console.log(str);

输出将是:

I say : "Hello, World!"