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);