yandex / mapsapi-modules

Async modular system
132 stars 29 forks source link

Возможность указать baseUrl #40

Closed just-boris closed 9 years ago

just-boris commented 9 years ago

Require JS имеет опцию baseUrl, с помощью которой я могу указать, в каком месте находятся мои подмодули. Как указать это в ym, чтобы все подмодули грузились из правильной папки?

dfilatov commented 9 years ago

ym не занимается загрузкой модулей, он выполняет только функцию разрешения зависимостей.

just-boris commented 9 years ago

@dfilatov я правильно понимаю, что эта модульная система используется в Яндекс-картах? Например, этот метод из API карт вызывает загрузку скрипта. Как это может быть? Здесь на github лежит не полная версия?

dfilatov commented 9 years ago

Да, апи Яндекс.Карт использует эту модульную систему (правда с оберткой в промисы). Модуль сам может загружать себя с помощью другого модуля-загрузчика. Например:

modules.define(
    'ymaps',
    ['loader', 'config'],
    function(provide, loader, config) {

    loader(config.ymaps.url, function() {
        ymaps.ready(function() {
            provide(ymaps);
        });
    });

});

modules.require('ymaps', function(ymaps) {
    new ymaps.Map('map', {
        center : [55.72, 37.64],
        zoom : 5
    });
});

loader — это обычный модуль, который загружает внешний js.