Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ES6从文件内容插入字符串_Javascript_Node.js_Ecmascript 6 - Fatal编程技术网

Javascript ES6从文件内容插入字符串

Javascript ES6从文件内容插入字符串,javascript,node.js,ecmascript-6,Javascript,Node.js,Ecmascript 6,我在ES6中发现了这个特性。如果我在代码中定义原始字符串,它就会工作。但是我想从文件中读取原始字符串,然后替换占位符。怎么做 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'? 唯一的方法是

我在ES6中发现了这个特性。如果我在代码中定义原始字符串,它就会工作。但是我想从文件中读取原始字符串,然后替换占位符。怎么做

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'?

唯一的方法是
对文件中的模板字符串进行转义
并稍后进行
求值
,有关详细信息,请参阅。

我决定使用它,因为它看起来很简单。或者,handlebar也适用于复杂表达式。Petr建议使用
eval
也可以,但我在项目中使用
eval
有一些限制

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

您可以构建一个单行程序,而不是加载模板引擎。这将用对象中的值替换${field}

var obj = {a: 'one', b: 'two'};
var templ = '${a}, ${b}';

templ.replace(/\${([^}]*)}/g, (r,k)=>obj[k]);

//  'one, two'

不,你需要一个合适的模板引擎。是的,es6模板字符串是一个不错的选择。在这一点上,ES6模板语法没有“本机”的好处,它只是另一个没有额外功能的模板引擎,如果在应用程序中使用任何其他模板引擎(把手、Nunjucks、EJS等),它可以在这里使用,以保持一致性,并获得同样的成功。