Модульна архітектура в javascript

Функцію ядра бере на себе патерн Медіатор (він же Посередник). Використання цього шаблону виключає прямі взаємодії між незалежними об'єктами за рахунок введення об'єкта-посередника. Коли будь-якої з модулів змінює свій стан, він сповіщає про це ядро ​​програми, а то в свою чергу повідомляє про зміни всіх інших модулів, які повинні знати про це.

Що собою представлятиме ядро ​​(Медіатор / Посередник) в модульній архітектурі?

Уявімо, що у нас є два дуже простих модуля, які ми хочемо додати в свій проект: один отримує два параметри у вигляді цифр, після чого повертає їх суму, а другий отримує параметр і виводить його на екран.

Перш я хочу сказати пару слів про паттерне Фасад. Як я писав раніше: модуль - це самовизивающаяся функція, змінні і методи якої приховані від користувача, крім тих змінних і тих методів, які ми самі хочемо зробити публічними. Ці публічні дані і називається фасадом, за яким знаходиться архітектура модуля.

Давайте розглянемо це на прикладі. Нехай змінна Namespace буде нашим простором імен, в якому буде об'єкт modules. в ньому і будуть зберігається модулі.


Проробимо тугіше операцію зі-другим модулем.


Як бачите, нічого складного: один модуль складає два числа, другий - виводить дані на екран. Я намагався спростити всі якомога більше, так як зараз головне розібратися в самій архітектурі модульних додатків і зрозуміти, як вона повинна працювати.

Модулі готові, тепер підготуємо ядро, яке буде імпортувати ці модулі і працювати з ними.

Як ви пам'ятаєте, Namespace.modues - це статична змінна, яка зберігає в собі модулі, іншим словом - це простір імен.

Раз у нас вже є одна глобальна змінна Namespace. то на ній і зупинимося. Запишемо в неї функцію, яка буде приймати два параметри. Перший - масив з модулями, а другий - функція зворотного виклику, яка ці самі модулі та буде використовувати за своїм призначенням.


З ядра додатка ми не повинні змінювати наші модулі, функція Namespace буде повертати тільки копії.


Отже, коли ми розуміємо, що саме ми хочемо від функції Namespace. то давайте її реалізуємо.


А ось і ядро ​​нашого застосування, він же патерн Медіатор, він же патерн Посередник.

Чого не вистачає функції Namespace?

  1. Завантаження файлів. Адже цей код не дуже добре виглядає:

Схожі статті