sid*_*ate 5 javascript node.js ecmascript-6
我遇到了ES6中的字符串插值功能。如果我在代码中定义了原始字符串,它将起作用。但是我想从文件中读取原始字符串,然后替换占位符。怎么做?
file.txt
hello ${customer.name}
Run Code Online (Sandbox Code Playgroud)
节点JS
var customer = {name: 'sid'};
var data = fs.readFileSync("file.txt","utf8");
// what should go here so that data is 'Hello sid'?
Run Code Online (Sandbox Code Playgroud)
您可以构建单线而不是加载模板引擎。这将用对象中的值替换$ {field}。
var obj = {a: 'one', b: 'two'};
var templ = '${a}, ${b}';
templ.replace(/\${([^}]*)}/g, (r,k)=>obj[k]);
// 'one, two'
Run Code Online (Sandbox Code Playgroud)
我决定去,es6-template-strings因为它看起来很简单。或者,handlebar也适用于复杂的表达式。 Petr 的建议eval也适用,但eval我的项目有一些限制
var data = fs.readFileSync("file.txt","utf8");
var compiled = compile(data);
var content = resolveToString(compiled, customer);
Run Code Online (Sandbox Code Playgroud)