yandex / mapsapi-modules

Async modular system
132 stars 29 forks source link

Add possibility to load external modules #31

Open zt-sv opened 10 years ago

zt-sv commented 10 years ago

Для своего проекта была необходимость подгружать модули из вне, если они существуют. Внешней утилитой создается JSON соответствия имени модуля файлу в котором он находится. Сделал две внешние функции findDep и loadModule. Первая ищет модуль, вторая загружает модуль если он в принципе существует.

Пример загрузки внешних модулей при помощи загрузчика LAB.js.

var modulesDep = {"cart/cartItemView":"cart.js","mainMenu":"mainMenu.js","mainMenu/mainMenuView":"mainMenu.js"};

modules.setOptions({
    findDep: function( dep ) {
        return modulesDep.hasOwnProperty(dep);
    },

    loadModule: function( moduleName, callback ) {
        var
            filename = modulesDep[moduleName];
        // end of vars

        console.log('loading module', filename);

        $LAB.script( filename ).wait(callback);
    };
});
zt-sv commented 10 years ago

Сделал загрузку асинхронной: в опциях задается функция loadModules, в которую передается массив имен модулей, которые необходимо загрузить. В тестах сделал ассинхронную загрузку нескольких модулей.