ES6从文件内容中进行string插值

我遇到了ES6中的string插值function。 它工作,如果我在代码中定义的原始string。 但我想从文件中读取原始string,然后replace占位符。 怎么做?

file.txt的

hello ${customer.name} 

节点JS

  var customer = {name: 'sid'}; var data = fs.readFileSync("file.txt","utf8"); // what should go here so that data is 'Hello sid'? 

唯一的方法是在文件中escape模板string,并在稍后进行eval ,请参阅此问题以获取更多详细信息。

您可以构build一个单线程而不是加载模板引擎。 这将用来自对象的值replace$ {field}。

 var obj = {a: 'one', b: 'two'}; var templ = '${a}, ${b}'; templ.replace(/\${([^}]*)}/g, (r,k)=>obj[k]); // 'one, two' 

我决定去es6-template-strings因为它看起来很简单。 彼得的build议使用eval也适用,但我有我的项目使用eval一些限制

 var data = fs.readFileSync("file.txt","utf8"); var compiled = compile(data); var content = resolveToString(compiled, customer);