Koh*_*ert 7 javascript json string-interpolation underscore.js-templating
我想做以下事情
var obj = {
animal: "${animal}"
};
var res = magic(obj, {animal: "cat"});
// res => {animal: "cat"}
Run Code Online (Sandbox Code Playgroud)
magic是一些做脏工作的功能.显然obj,使用多个键,嵌套数组等可能会更复杂.模板变量可以在这样的数组中
var obj = {
animals: ["cat", "dog", "${animal}", "cow"]
};
Run Code Online (Sandbox Code Playgroud)
它可以在阵列中的任何地方,所以简单地做obj.animals[2] = "bat";是不可行的.
我找到了可以实现我想要的下划线tpl库,但我想知道是否有其他解决方案供将来参考,因为我很难找到下划线tpl.
我实际使用的情况是我有一个config.json文件,我有几个声明,如下所示
{
"task1": {
"command": "command-line-program",
"args": [
"--input", "{{input}}",
"--flag1",
"--output", "{{output}}",
"--flag2",
],
"options": {
"cwd": "path-to-working-dir"
}
}
}
Run Code Online (Sandbox Code Playgroud)
我用这个解析consig.json JSON.parse(...)我打电话require("child_process").spawn用command,args并options在文件中声明的参数,但是args改变了不少,标志添加,重新排序和东西,所以只做config.task1.args[1] = "<input value>";涉及改变调用的代码spawn,并因为它得到这是容易出错.
您可以使用JSON.stringify该对象,然后将搜索值替换为实际值,然后是JSON.parse结果:
function magic(o, a) {
var j = JSON.stringify(o);
for (var k in a) {
j = j.split('${'+k+'}').join(a[k]);
}
return JSON.parse(j);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4295 次 |
| 最近记录: |