我想实现以下设置:
// app.js
(function () {
const add = function() {
// add
}
const substract = function() {
// substract
}
require('./module1');
require('./module2');
})()
// module1.js
add();
substract();
问题是当从module1.js中调用函数时,它们是未定义的(所有这些都与webpack捆绑在一起)。
我知道各种模块/文件之间“导出”和“导入”的解决方案。我只是想知道我是否可以实现这个设置,以避免在我使用的许多模块中导入(想象一下,例如,必须将它们导入50个模块/文件)。
实现此设置的正确方法是什么(如果可能)?
提前完成。
答案 0 :(得分:0)
如果可以的话,试试这个:
// app.js
(function addSubst() {
const add = function() {
// add
}
const substract = function() {
// substract
}
require('./module1');
require('./module2');
})()
// module1.js
import {addSubst} from 'app';//app.js
add();
substract();
答案 1 :(得分:0)
IIFE函数的范围在它自己调用之后结束,内部add
,substract
,它们将在IIFE之后没有参考,你应该尝试从这个文件中导出两个变量。如果你试图应用clousure
function currentModule() {
const add = function() {
// add
}
const substract = function() {
// substract
}
return { add : add, substract : substract}
})
var instanceHere = currentModule();
instanceHere.Add();
答案 2 :(得分:0)
我设法实现这一目标的方法是为我的应用程序创建一个全局对象(命名空间)。
(function() {
APP = window.APP || {};
APP.add = function() {
console.log('Adding...');
}
APP.substract = function() {
console.log('Substracting...');
}
// Import the modules.
require('./module1');
require('./module2');
})();
// module1.js
APP.add(); // Outputs "Adding..."
APP.substract(); // Outputs "Substracting..."