Node.js 从文件中读取数据并使用jade传递到模板

Node.js 从文件中读取数据并使用jade传递到模板,node.js,pug,Node.js,Pug,我有两个保存数据的文件: file1.txt Title1 Desc1 Title2 Desc2 file2.txt Title1 Desc1 Title2 Desc2 然后我有一个jade模板,我需要传递上面每个文件的第1行和第2行。这是翡翠模板: .title #{title} .desc #{desc} 这是我的server.js: app.get('/', function (req, res) { res.render('index'); }); 如何将每个数据文件

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

file1.txt

Title1
Desc1
Title2
Desc2
file2.txt

Title1
Desc1
Title2
Desc2
然后我有一个jade模板,我需要传递上面每个文件的第1行和第2行。这是翡翠模板:

.title #{title}
.desc #{desc}
这是我的server.js:

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

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

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

从磁盘读取非常简单:使用
fs.readFile()

也许您需要为一个请求读取两个文件?在这种情况下,您将不得不嵌套回调。或者,您可以使用promise库来简化回调

var fs = require('fs');

fs.readFile(filename1, 'utf8', function(err, data1) {
  fs.readFile(filename2, 'utf8', function(err, data2) {
    // ... now parse in here
  });
});
一旦你有了数据,你就会想要解析它。根据您的示例,您的格式非常简单。下面是您可以如何解析它:

var lines = data.split(/\r?\n/);
var title = lines.shift();
var desc = lines.shift(); 
// or, maybe "lines.join('\n')" to support multiple lines
最后,要将模板呈现给客户端。如果您使用的是Express(仅基于代码示例——您没有指定),则可以将模板变量作为第二个参数的属性传递给
res.render()


然后读文件。res.render('index',{title:titleFromFile,desc:descFromFile});