Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.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-替换为字符串模板,但捕获缺少的变量_Javascript_Ecmascript 6_Mustache - Fatal编程技术网

javascript-替换为字符串模板,但捕获缺少的变量

javascript-替换为字符串模板,但捕获缺少的变量,javascript,ecmascript-6,mustache,Javascript,Ecmascript 6,Mustache,我想对字符串执行变量替换(我已经排除了模板文本,因为字符串必须在以后存储和计算) 胡子之类的东西看起来像是一个竞争者,但我想知道替换是否不完整。在这种情况下,需要生成URL,因此缺少的部分表示无效URL: 在节点中对此进行测试: var Mustache = require('mustache'); var result = Mustache.render("/someurl/{{path1}}/{{path2}}/", {path1:"my-path-to-1"}) console.log(

我想对字符串执行变量替换(我已经排除了模板文本,因为字符串必须在以后存储和计算)

胡子之类的东西看起来像是一个竞争者,但我想知道替换是否不完整。在这种情况下,需要生成URL,因此缺少的部分表示无效URL:

在节点中对此进行测试:

var Mustache  = require('mustache');
var result = Mustache.render("/someurl/{{path1}}/{{path2}}/", {path1:"my-path-to-1"})
console.log(`result:${result}:`)
这种情况发生时没有问题,但结果url是无用的,因为Mustach会用空字符串悄悄地替换缺少的路径2。我希望看到的是抛出一个异常(最好)或失败,这是一个简单的方法来识别并不是所有的东西都被替换了

注意:模板字符串是任意的,替换对象的内容也是任意的

输出:

result:/someurl/my-path-to-1//:
KeyError: 'path2'
T_URL:/someurl/%(path1)s/%(path2)s/, substitutions:
{ path1: 'mypath1' }
expecting a failure...
  exception:Error: [sprintf] property 'path2' does not exist

T_URL:/someurl/%(path1)s/%(path2)s/, substitutions:
{ path1: 'mypath1', path2: 'mypath2' }

expecting a success:
  url:/someurl/mypath1/mypath2/:
这是我正在寻找的Python等价物:

res = "/someurl/%(path1)s/%(path2)s/" % {"path1":"my-path-to-1"}
输出:

result:/someurl/my-path-to-1//:
KeyError: 'path2'
T_URL:/someurl/%(path1)s/%(path2)s/, substitutions:
{ path1: 'mypath1' }
expecting a failure...
  exception:Error: [sprintf] property 'path2' does not exist

T_URL:/someurl/%(path1)s/%(path2)s/, substitutions:
{ path1: 'mypath1', path2: 'mypath2' }

expecting a success:
  url:/someurl/mypath1/mypath2/:

我最终使用了sprintf,它的优点是具有与Mustach(或Django)不同的格式,因此您可以将其嵌入
数据url
或类似内容中:

const sprintf = require("sprintf-js").sprintf;

var o_substit = {
  path1 : "mypath1"
};

var T_URL = "/someurl/%(path1)s/%(path2)s/";


console.log(`\nT_URL:${T_URL}, substitutions:`);
try {
  console.dir(o_substit);
  console.log("expecting a failure...")
  var url = sprintf(T_URL, o_substit);
  console.log(`  url:${url}:`);
}
catch (e){
  console.log(`  exception:${e}`);  
};

var o_substit = {
  path1 : "mypath1"
  ,path2 : "mypath2"
};


console.log(`\nT_URL:${T_URL}, substitutions:`);
try{
  console.dir(o_substit);
  console.log("\nexpecting a success:")
  var url = sprintf(T_URL, o_substit);
  console.log(`  url:${url}:`);
}
catch (e){
  console.log(`  exception:${e}`);  
};
输出:

result:/someurl/my-path-to-1//:
KeyError: 'path2'
T_URL:/someurl/%(path1)s/%(path2)s/, substitutions:
{ path1: 'mypath1' }
expecting a failure...
  exception:Error: [sprintf] property 'path2' does not exist

T_URL:/someurl/%(path1)s/%(path2)s/, substitutions:
{ path1: 'mypath1', path2: 'mypath2' }

expecting a success:
  url:/someurl/mypath1/mypath2/:

我最终使用了sprintf,它的优点是具有与Mustach(或Django)不同的格式,因此您可以将其嵌入
数据url
或类似内容中:

const sprintf = require("sprintf-js").sprintf;

var o_substit = {
  path1 : "mypath1"
};

var T_URL = "/someurl/%(path1)s/%(path2)s/";


console.log(`\nT_URL:${T_URL}, substitutions:`);
try {
  console.dir(o_substit);
  console.log("expecting a failure...")
  var url = sprintf(T_URL, o_substit);
  console.log(`  url:${url}:`);
}
catch (e){
  console.log(`  exception:${e}`);  
};

var o_substit = {
  path1 : "mypath1"
  ,path2 : "mypath2"
};


console.log(`\nT_URL:${T_URL}, substitutions:`);
try{
  console.dir(o_substit);
  console.log("\nexpecting a success:")
  var url = sprintf(T_URL, o_substit);
  console.log(`  url:${url}:`);
}
catch (e){
  console.log(`  exception:${e}`);  
};
输出:

result:/someurl/my-path-to-1//:
KeyError: 'path2'
T_URL:/someurl/%(path1)s/%(path2)s/, substitutions:
{ path1: 'mypath1' }
expecting a failure...
  exception:Error: [sprintf] property 'path2' does not exist

T_URL:/someurl/%(path1)s/%(path2)s/, substitutions:
{ path1: 'mypath1', path2: 'mypath2' }

expecting a success:
  url:/someurl/mypath1/mypath2/: