模板文字被困在一个stringvariables中
我有一个模板
存储在一个variables中。 我正在使用Hello, ${user.name}
fs.read
从外部文件读取这个。
现在,当我附加到目标div的innerHTML时,它显示了string,而不是“Hello,James”(假定用户名= James)。
有没有办法让它发生?
extfile.txt =>
{"A":"`Welcome, ${user.name}`"}
Node.js code =>
fs.readFile(__ dirname +'/extfile.txt','utf8',函数(err,data){ 如果(err){ return console.log(err); } else { 让x = JSON.parse(data); socket.emit( 'var' 或XA); } });
HTML =>
socket.on( 'var' 或函数(X)){ getElementById('target')。innerHTML = x; }
我稍微改写了这里提出的解决scheme。
在这里, eval_template
计算一个ES6模板string作为常规string提供。 模板string中使用的局部范围内的任何variables都需要作为在第二个参数中传递的对象的属性来提供(因为使用Function
创build的Function
在全局范围内,并且不能访问局部variables)。
这很危险地使用eval
。 您可能想要select不同的方法来处理您的模板string。 ES6模板string被devise成运行时机制来创buildstring文字,而不是模板可以存储和重用的模板语言。
function eval_template(s, params) { return Function(...Object.keys(params), "return " + s) (...Object.values(params)); } const template = "`Welcome, ${user.name}`"; console.log(eval_template(template, {user: {name: "James"}}));
模板文字需要$
,而不是&符号。 此外,请记住使用反引号,而不是引号。