替换文件循环中的多个值
Replace multiple values in file loop
我正在尝试为自己构建一个快速而肮脏的静态站点生成器。
假设我有这个test.html
文件:
{title}
{downloadpath}
这是我获得要替换的值的current.json
:
{
"id": 123,
"album" : [{
"title": "Test EP",
"albumid": 1234,
"path": "test.zip"
}]
}
我的替换函数如下所示:
// Iterate through JSON object and replace
function iterate(obj) {
for (var property in obj) {
if (obj.hasOwnProperty(property)) {
if (typeof obj[property] == "object")
iterate(obj[property]);
else
console.log("replace {" + property + "} with " + obj[property] )
htmldata.replace(/'{property'}/g, obj[property]);
}
}
}
iterate(json)
var result = htmldata
console.log(result)
// Write new HTML
fs.writeFile("test-" + json.id + ".html", result, 'utf8', function (err) {
if (err) {
return console.log(err);
}
});
如果我运行它,它的工作原理是这样的:
replace {id} with 123
replace {title} with Test EP
replace {albumid} with 1234
replace {path} with test.zip
{title}
{path}
你可以在那里看到问题。我认为它总是用输入文件替换编辑后的文件,所以我看不到任何变化。我想不通,如果有人能指出我正确的方向,我将不胜感激。
谢谢!
不使用大括号if
语句会导致细微的错误!
你想要:
if (typeof obj[property] == "object") {
iterate(obj[property]);
} else {
console.log("replace {" + property + "} with " + obj[property] )
htmldata.replace(/'{property'}/g, obj[property]);
}
否则,无论if
上的条件如何,replace
每次都会运行。
第二件事:您的正则表达式尝试匹配文字字符串"{property}"
。相反,请尝试以下操作:
htmldata.replace(new RegExp("{" + property + "}", "g"), obj[property]);
第三件事:您没有将replace
的结果分配回htmldata
。所以你需要这样做:
htmldata = htmldata.replace(new RegExp("{" + property + "}", "g"), obj[property]);
相关文章:
- 在ng重复循环中显示来自不同文件夹的图像
- 玉循环浏览文件目录
- Javascript/webpack:如何用自定义的文件循环连接目录中的所有json文件
- 使用 ajax、PHP 和 Javascript 循环遍历 JSON 文件
- $.post到PHP文件-在包含循环完成之前不会调用回调
- Javascript获取文件内容循环
- 在一个循环中读取xml文件的所有节点
- 为什么不是't用于将每个元素写入文件的循环
- 将map连接到json文件进行循环
- 如何使用 Javascript 循环遍历外部 JSON 文件数据
- 如何使用 javascript 循环访问文件系统目录和文件
- 替换文件循环中的多个值
- JS循环图像文件夹,预加载它们并分配给数组
- 第二个音频文件意外循环
- 如何在 JavaScript 中逐字节循环访问文件
- S3 循环访问存储桶/文件夹/文件
- 如何字符串化循环 JSON 对象并将其保存到文件
- JavaScript JSzip将文件添加到每个循环
- 车把,从不同的javascript文件循环数组
- 从json文件循环并搜索,然后通过jquery和json获取值