模板文字被困在一个stringvariables中

我有一个模板Hello, ${user.name}存储在一个variables中。 我正在使用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"}})); 

模板文字需要$ ,而不是&符号。 此外,请记住使用反引号,而不是引号。