1

我想在节点中使用 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);
4

1 回答 1

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!"
于 2011-08-10T17:39:44.940 回答