Javascript 如何将信息填充到模板文本文件中?

Javascript 如何将信息填充到模板文本文件中?,javascript,Javascript,有一个单独的模板文本文件,我想用它在我的页面上生成内容。目前我正在使用 string.replace("original", "target"); 替换特殊字符串。我制作了一把简单的小提琴来展示这一点。 我想知道是否有更有效的方法来做到这一点 谢谢 ===编辑=== 我的意思是,还有没有其他方法可以使用string.replace?对我来说这听起来很有效。为什么不使用replace(/\ugi,”),你能给我们提供更多关于这方面的信息吗 string.replace(/_/gi, '');

有一个单独的模板文本文件,我想用它在我的页面上生成内容。目前我正在使用

string.replace("original", "target");
替换特殊字符串。我制作了一把简单的小提琴来展示这一点。

我想知道是否有更有效的方法来做到这一点

谢谢

===编辑===
我的意思是,还有没有其他方法可以使用
string.replace
?对我来说这听起来很有效。

为什么不使用replace(/\ugi,”),你能给我们提供更多关于这方面的信息吗

string.replace(/_/gi, '');

您可以将模板值存储在对象中,然后循环遍历键/值对

<!DOCTYPE html>
<html>
    <head>
        <title>Demo page</title>
        <meta charset="utf-8"/>
    </head>
    <body>
    <div id="main">

    </div>
<script>
function populateTemplate(fileAsString, values){
  for(var key in values){
    if(values.hasOwnProperty(key)){
      fileAsString = fileAsString.replace("_"+key+"_", values[key]);
    }
  }
  return fileAsString;
}

function readTemplateFrom(file){
    return "_arg0_ Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, _arg1_ vel illum dolore eu feugiat nulla facilisis.";
}

/*var arg0="This is arg0.";
var arg1= "Time now is " + new Date().getTime();*/
var fileAsString=readTemplateFrom("templateFile.txt");
var values = {
    "arg0": "This is arg0",
    "arg1": "Time now is " + new Date().getTime()
};
document.getElementById("main").innerHTML = populateTemplate(fileAsString, values);
</script>
    </body>
</html>

演示页
函数populateTemplate(fileAsString,值){
for(var输入值){
if(values.hasOwnProperty(键)){
fileAsString=fileAsString.replace(“”+key+“”,value[key]);
}
}
返回fileAsString;
}
函数readTemplateFrom(文件){
返回“\uarg0\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu;
}
/*var arg0=“这是arg0。”;
var arg1=“现在的时间是”+新日期().getTime()*/
var fileAsString=readTemplateFrom(“templateFile.txt”);
var值={
“arg0”:“这是arg0”,
“arg1”:“现在的时间是”+新日期().getTime()
};
document.getElementById(“main”).innerHTML=populateTemplate(fileAsString,value);

我写了一篇博客文章,介绍了一种实现这一点的技术。 还有JSFIDLE

此技术在开始和结束分隔符之间定位属性名称,并用值替换该属性名称

代码如下所示:

function ApplyTemplate(template, properties) {
    var returnValue = "";

    var templateFragments = template.split("{{");

    returnValue += templateFragments[0];

    for (var i = 1; i < templateFragments.length; i++) {
        var fragmentSections = templateFragments[i].split("}}", 2);
        returnValue += properties[fragmentSections[0]];
        returnValue += fragmentSections[1];
    }

    return returnValue;
}

\u arg0\u
\u arg1\u
是否总是在模板中出现一次?我认为只要你只替换一个
\u arg0\u
\u arg1\u
,你所拥有的并不是那么糟糕。如果要替换这些标记的多个实例,则可能需要研究使用正则表达式,该正则表达式是string.replace的重载版本之一。
var template =  "The quick {{Color}} {{Animal}} jumped over the lazy dog";

var values = {
    Animal: "fox",
    Color: "brown"
};

var result = ApplyTemplate(template,values);