NodeJS,批处理文件,替代每个文件写入过多的对象/函数?

时间:2016-12-30 17:59:05

标签: node.js batch-processing mustache

我需要获取名为templates /的所有胡子模板目录,并使用hogan编译它们。

理论上,假设他们的名字是,

file1.mustache file2.mustache file3.mustache

然后我们得到每个视图,并将结果保存到名为build /.

的输出目录中

理论上,结果名称是

name.file1 name.file2 name.file3

显然异步是优选的,但我最感兴趣的是你如何有效地做到这一点?我无法相信唯一的方法是对每个文件对象和匿名函数进行操作。

1 个答案:

答案 0 :(得分:2)

您可以使用fs-promise模块和Promise.all来轻松地并行读取,处理和编写文件:

const fsp = require('fs-promise');

function processTemplate(filename) {
  return fsp.readFile(filename, 'utf8')
    .then((template) => hogan.compile(template))
    .then((compiledTemplate) => fsp.writeFile('path/to/compiled', compiledTemplate));
}

fsp.readdir('./templates')
  .then((files) => Promise.all(files.map(processTemplate)))
  .catch((error) => console.log(error));

虽然我不确定我是什么意思和#34;每个文件对象和匿名函数"。