Я хочу выполнить следующую настройку:
// app.js
(function () {
const add = function() {
// add
}
const substract = function() {
// substract
}
require('./module1');
require('./module2');
})()
// module1.js
add();
substract();
Проблема в том, что когда функции вызываются из module1.js, они не определены (все это связано с webpack).
Я знаю решение "экспортировать" и "импортировать" между различными модулями/файлами. Мне просто интересно, смогу ли я достичь этой настройки, чтобы избежать импорта во многих модулях, которые я использую (представьте, например, чтобы импортировать их на 50 модулей/файлов).
Каков правильный способ достижения этой настройки (если это возможно)?
Thanx заранее.
То, как мне удалось это сделать, было создание глобального объекта (пространства имен) для моего приложения.
(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..."
Объем функции IIFE заканчивается после того, как он вызывает его сам, а внутри add
, substract
, они не будут refrence после IIFE, вы должны попытаться экспортировать оба varibles из этого файла. Если вы попытаетесь применить clousure
function currentModule() {
const add = function() {
// add
}
const substract = function() {
// substract
}
return { add : add, substract : substract}
})
var instanceHere = currentModule();
instanceHere.Add();
Попробуйте, если вы можете:
//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();