Как работает организация связи между модулями Javascript?
Всем привет, решил разобраться как организовать связь между модулями, и наткнулся на статью на хабре но никак немогу понять как она вызываеться и работает, что передается. Подскажите пожалуйста
// Слабая связанность
var Module1 = {
"init": function ($) {
$.on('event', function (e) { // $ - не jQuery, это экземпляр sandbox
console.log(e.data);
});
}
};
var Module2 = {
"someAction": function ($) { // $ - не jQuery
$.trigger('event', 'data');
}
};
При вызове метода someAction у модуля модуль инициирует событие event (глобальное событие для всех компонентов которые подписаны на него). В вашем примере модуль Module1 в методе init подписывается на событие и что-то делает при этом.
Читать про шаблон observer и все такое. Важно понять где стоит применять подобный подход а где лучше явно вызвать метод другого модуля.
С целью разбивки клиентского приложения на модули я использую подход AMD. Наиболее популярная реализация данного механизма представлена в RequireJS. Подход AMD в целом ныне очень популярен, потому что малыми силами позволяет реализовать асинхронную загрузку модулей.
Да. Все, кроме тех, что нужны при первом запуске. Gulp (gulpjs.com/) отлично занимается менеджментом загружаемых и предзагруженных модулей, в том числе и HTML.