gpt4 book ai didi

javascript - 使用对象作为查找表: Values dont update after first call

转载 作者:行者123 更新时间:2023-12-02 22:57:05 25 4
gpt4 key购买 nike

我正在尝试为我的 html 网页实现一个变量系统。这就是为什么我编写了一个函数,该函数将接受一些字符串,在其中搜索变量,将它们替换为相应的值,然后返回新字符串:

//Finish HTML files by replacing variables
handlers.insertVariables = function(file, callback){
//Load variables
let variables = require('./variables.js');
console.log(variables) //For debugging only
//Loop through all possible variables and replace
for(let key in variables){
if(variables.hasOwnProperty(key)){
let find = '{' + key + '}';
let replace = variables[key];

file = file.split(find).join(replace)
//file = file.replace('{' + key + '}', variables[key])
}
}

//Callback the new file
callback(false, file);

};

这部分工作没有问题。它还能够替换同一变量的多个实例。现在的问题是外部变量.js 文件。我为这些创建了一个外部文件,因为我将来可能会创建几十个这样的文件。这是variable.js 文件:

//Container with all variables
let variables = {
'landing_videoID': global.newestVideo.id,
'landing_time': new Date(Date.now()).toUTCString()
};

//Export the variables
module.exports = variables;

当第一次调用handlers.insertVariables函数时,它将接收最新的值。但这些都不再改变了。我做错了什么,还是我的尝试总体来说只是废话?感谢您的帮助!

最佳答案

模块在第一个 require 之后被缓存。解决这个问题的一种方法是导出为函数并每次调用它,如下所示:

因此,重构 variable.js 如下:

//Container with all variables
function getValues()
return {
'landing_videoID': global.newestVideo.id,
'landing_time': new Date(Date.now()).toUTCString()
};
}

//Export the variables
module.exports = getValues;

然后,require variable.js如下所示:

//Load variables
let variables = require('./variables.js')();

关于javascript - 使用对象作为查找表: Values dont update after first call,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57935022/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com