[英]Can Modules access variables stored in other modules that have not been imported, but both modules are exported to a main file?
我是JavaScript领域的初学者,我只是在学习有关模块以及如何使用它们的知识。
情况如下:
我有一个main.js
文件和两个module#.js文件, module1.js
和module2.js
。
project/
main.js
modules/
module1.js
module2.js
这些文件都已分别导入到main.js
,但是module2.js
包含一个函数displayAll()
,用于显示数组中的所有项目items = [item1, item2, item3]
。
function displayAll() {
for (let i = 0; i < items.length; i++) {
console.log(`Item ${i} is ${items[i]}`)
}
}
这并不完全是它的外观,但这是重点。 我的问题是, 由于上述函数包含在module2.js
,如何让它访问module1.js
包含的数组items
? 如果需要另一个文件怎么办? 我如何将其导出到多个文件而不创建混乱的导入网络?
我还不熟悉任何框架,因此请尽可能多地使用核心javascript。
谢谢!
首先,您需要创建一个加载所需内容的函数。
在module2.js中,创建此函数,将module1.js附加到该函数
function loadJS(callback) {
var firstScriptElem = document.getElementsByTagName('script')[0], script = document.createElement('script');
script.type = 'text/javascript';
script.src = module1.js;
script.async = false;
// Binds the event to the callback function. We use more than one event for cross browser compatibility.
script.onreadystatechange = callback;
script.onload = callback;
firstScriptElem.appendChild(script);
};
然后,您需要创建一个回调函数,该函数实际上将在检索module1.js后运行您要运行的代码
function callBack() {
// get your array
// do something with the array
}
现在在module2中,调用loadJS(callBack)
并在其中找到它。
现在,我知道您是新手,还不想深入研究框架。 但是我要向您提及,requireJS非常简单地完成了所有这些工作。 我已经使用了一段时间,但是一旦我开始使用requireJS,我意识到我应该从一开始就使用它,因为它的组织方式更加合理,您当然不必重复它。 使模块管理更加容易(我也是,最近才开始学习javascript中的模块模式)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.