从文件中读取数据并使用jade传递给模板

我有两个文件,我保存数据:

FILE1.TXT

Title1 Desc1 

FILE2.TXT

 Title2 Desc2 

然后我有一个玉的模板,我需要从上面的每个文件中传递第1行和第2行。 这是玉模板:

 .title #{title} .desc #{desc} 

这是我的server.js:

 app.get('/', function (req, res) { res.render('index'); }); 

如何将每个数据文件的行传递给模板?

您需要从磁盘读取数据,parsing格式,然后将parsing的数据传递给您的模板。

从磁盘读取相当简单:使用fs.readFile()

 var fs = require('fs'); fs.readFile(filename, 'utf8', function(err, data) { // do something with "data" here... }); 

也许你需要阅读这两个文件的单个请求? 在这种情况下,你将不得不嵌套你的callback。 或者,您可以使用蓝鸟这样的承诺库来简化callback。

 var fs = require('fs'); fs.readFile(filename1, 'utf8', function(err, data1) { fs.readFile(filename2, 'utf8', function(err, data2) { // ... now parse in here }); }); 

一旦你有数据,你会想parsing它。 给出你的例子,你的格式非常简单。 以下是您可以parsing它的方法:

 var lines = data.split(/\r?\n/); var title = lines.shift(); var desc = lines.shift(); // or, maybe "lines.join('\n')" to support multiple lines 

最后,你想把你的模板呈现给客户端。 如果您使用Express(仅基于代码示例 – 您没有指定),则可以将模板variables作为第二个参数的属性传递给res.render()

 var fs = require('fs'); app.get('/', function(req, res, next) { fs.readFile(filename, 'utf8', function(err, data) { // reading the file failed, report error to the user if (err) return next(err); // parse the data var lines = data.split(/\r?\n/); var title = lines.shift(); var desc = lines.shift(); // render template res.render('index', {title: title, desc: desc}); }); });