bem-site / bem-forum-content-ru

Content BEM forum for Russian speak users
MIT License
56 stars 6 forks source link

Подключение модулей в рантайме. #1021

Open kompolom opened 8 years ago

kompolom commented 8 years ago

Насколько я помню ymodules не умеет подключать модули из внешних файлов. А очень надо. Если модуля нет в рантайме, то подгружать его по url, как в requirejs. Возможно ли это? Если да, то в какую сторону смотреть?

apsavin commented 8 years ago

вот пример загрузки файла.

kompolom commented 8 years ago

@apsavin вопрос не в том как загрузить файл, а как загрузить ymaps модуль из внешнего файла и запровайдить его.

apsavin commented 8 years ago

А что идёт не так, если загрузить файл, в котором ymaps модуль?

kompolom commented 8 years ago

@apsavin произойдет то что модуль не запровайдится

kompolom commented 8 years ago

Попробую описать задачу подробнее:

modules.define('module1', ['internalModule'], function(provide, im){});

как сделать так, чтобы internalModule подключился из /internalModule.js если его нет в рантайме, запровийдился и попал в коллбэк module1?

Насколько я понимаю тут не обойдется без изменений в самом ymodules. Хотелось бы узнать насколько кардинальные изменения потребуются, может у кого то готовая реализация есть...

apsavin commented 8 years ago

Ну вот по ссылке, которой я дал в самом начале, практически тоже самое, только вместо строки 'internalModule' - 'jquery', разве нет?

apsavin commented 8 years ago

Если хочется, чтобы ymodules сам, для любого модуля, начинал запрашивать js-файлы - то да, надо менять сам ymodules. А откуда ему брать ссылки на эти файлы?

kompolom commented 8 years ago

@apsavin по ссылке в самом начале не то. В случае если там не jquery а модуль, то модулю придется подключить скрипт, потом зареквайрить самого себя и запровайдить. Мне это не нравится.

Откуда ymodules возьмет ссылки на файлы вопрос хороший. допустим у нас все модули лежат на фс в одной папке. тогда остается в ym передать некий конфиг с базовым урлом.

apsavin commented 8 years ago

Для простых случае - все модули на фс в одной папке - наверное, сработает. Для сложных - несколько уровней переопределения, как это обычно бывает в проектах с ymodules - даже не знаю... Откуда такая потребность? Может, можно решить задачу по-другому?

kompolom commented 8 years ago

Хочу выкинуть некоторые модули из сборки. В частности bemhtml и прочие тяжелые. На мобильные устройства не хочется тащить. зависимости которые нужны будут менее чем в 50% случаев. А так как проект на http2 работает, думаю что будет целесообразно.