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);