Доступ к функциям внутри замыкания из импортированных модулей

1

Я хочу выполнить следующую настройку:

// app.js
(function () {
    const add = function() {
        // add
    }
    const substract = function() {
        // substract
    }

     require('./module1');
     require('./module2');  
})()


// module1.js
add();
substract();

Проблема в том, что когда функции вызываются из module1.js, они не определены (все это связано с webpack).

Я знаю решение "экспортировать" и "импортировать" между различными модулями/файлами. Мне просто интересно, смогу ли я достичь этой настройки, чтобы избежать импорта во многих модулях, которые я использую (представьте, например, чтобы импортировать их на 50 модулей/файлов).

Каков правильный способ достижения этой настройки (если это возможно)?

Thanx заранее.

Теги:

3 ответа

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..."
0

Объем функции 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();
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();

лучшее объяснение и для большего количества языков

Ещё вопросы

Сообщество Overcoder
Наверх
Меню