使用javascript从模块内的JSON文件加载设置
我有几个不同的工具,每个工具都有许多私人和公共功能。我使用一个JSON数据文件来存储工具所需的设置和数据。 这是因为我们没有编码知识的编辑器应该能够更改JSON文件中的设置和数据,并根据需要调整所有工具 所有工具都在一个模块中实现,以便能够封装全局变量和所有工具 我对所有工具使用显示模块,另外一个模块封装所有工具使用javascript从模块内的JSON文件加载设置,javascript,json,revealing-module-pattern,Javascript,Json,Revealing Module Pattern,我有几个不同的工具,每个工具都有许多私人和公共功能。我使用一个JSON数据文件来存储工具所需的设置和数据。 这是因为我们没有编码知识的编辑器应该能够更改JSON文件中的设置和数据,并根据需要调整所有工具 所有工具都在一个模块中实现,以便能够封装全局变量和所有工具 我对所有工具使用显示模块,另外一个模块封装所有工具 Example: var mainModule = (function () { var toolOne = (function () { function
Example:
var mainModule = (function () {
var toolOne = (function () {
function publicFunc () {
console.log('Some toolOne action.');
}
return {
publicFunc: publicFunc;
}
})();
var toolTwo = (function () {
function publicFunc () {
console.log('Some toolTwo action.');
}
return {
publicFunc: publicFunc;
}
})();
return {
one: toolOne.publicFunc,
two: toolTwo.publicFunc
}
})();
mainModule.one();
mainModule.two();
有没有更好的方法来组织所有工具?
异步加载JSON文件并在所有模块中使用设置的最佳方法是什么?只需在主模块顶部加载JSON文件即可:
var settings = require('./path/to/data.json');
这些设置是什么,如何应用等等?您的代码不起作用。您的内部IIFE不返回任何内容,因此
moduleOne
和moduleTo
都是未定义的。实际上,没有理由嵌套暴露的模块模式。对加载的JSON使用全局承诺。您的代码不是JSON,因此您的问题没有真正意义。您正在尝试加载Javascript代码文件还是JSON文件?如果您使用的是node.js,您可以让require()
为您完成所有工作,因为它将缓存结果。每个模块只能require()
模块。第一个将加载它,其余的将从缓存中获取。“真的,没有理由嵌套显示模块模式”+1这是异步加载文件吗?不,它的同步,但我确实想知道您需要异步的用例是什么?此代码不应阻止页面显示加载此文件时是否出现问题。我通常在启动时加载设置/配置文件,因此这不是真正的问题