модульные дома для круглогодичного проживания

модульные мобильные дома для круглогодичного проживания

H Модульная архитектура в JavaScript в черновиках Из песочницы

Прочитав книгу «Паттерны для масштабируемых JavaScript-приложений», решил реализовать данную структуру на практике.

Подробности описания модульной структуры изложены по вышеуказанной ссылке, но если вы еще не знакомы с этим материалом, то вкратце: масштабируемые JavaScript-приложения строятся на трёх китах, а точнее — на трёх паттернах: Медиатор, Фасад, Модуль.

модуль дом цена

ок модуль дома

модульные здания производство москва

Функцию ядра берет на себя паттерн Медиатор (он же Посредник). Использование этого шаблона исключает прямые взаимодействия между независимыми объектами за счет введения объекта-посредника. Когда какой-либо из модулей изменяет свое состояние, он извещает об этом ядро приложения, а то в свою очередь сообщает об изменениях всем остальным модулям, которые должны знать об этом.

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

Представим, что у нас есть два очень простых модуля, которые мы хотим добавить в свой проект: один получает два параметра в виде цифр, после чего возвращает их сумму, а второй получает параметр и выводит его на экран.

Прежде я хочу сказать пару слов о паттерне Фасад. Как я писал раньше: модуль — это самовызывающаяся функция, переменные и методы которой скрыты от пользователя, кроме тех переменных и тех методов, которые мы сами хотим сделать публичными. Эти публичные данные и называется фасадом, за которым находится архитектура модуля.

Давайте рассмотрим это на примере. Пусть переменная Namespace будет нашим пространством имен, в котором будет объект modules, в нем и будут хранится модули.

Добавим функцию sum в Namespace.modules. Обратите внимание на комментарии к коду.

Проделаем туже операцию со-вторым модулем.

Как видите, ничего сложного: один модуль складывает два числа, второй — выводит данные на экран. Я старался упростить все как можно больше, так как сейчас главное разобраться в самой архитектуре модульных приложений и понять, как она должна работать.

Модули готовы, теперь подготовим ядро, которое будет импортировать эти модули и работать с ними.

Как вы помните, Namespace.modues — это статическая переменная, которая хранит в себе модули, другим словом — это пространство имен.

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

Из ядра приложения мы не должны изменять наши модули, функция Namespace будет возвращать только копии.

Итак, когда мы понимаем, что именно мы хотим от функции Namespace , то давайте её реализуем.

А вот и ядро нашего приложения, он же паттерн Медиатор, он же паттерн Посредник.

Чего не хватает функции Namespace?

    Загрузка файлов. Ведь этот код не очень хорошо смотрится:

А если у нас сотня таких модулей? В идеале будет, если мы загрузим только файл с Namespace, а все остальные модули будут грузиться тогда, когда будем передавать их в ядро приложения или грузить по требованию. То есть, если приложение действительно нуждается в этом самом модуле (кликнули на чат — загрузился модуль чата).

  • Пространство имен. Сейчас все модули находятся в одном пространстве — Namespace.modules, но если мы захотим разбить их на под-пространства: Namespace.MATH и Namespace.TEXT? Сейчас это не получится, функция Namespace пока не выполняет данную реализацию, но в будущем я планирую улучшить функционал и реализовать, как первый таки второй пункт.
  • Все вышеизложенное было написано с целью показать и объяснить новичкам, как работает модульная структура в JavaScript. Сейчас есть много хороших библиотек, которые уже умеют работать с модулями (тот же require.js). Да и через пару тройку лет можно будет во всю использовать EcmaScript 6, где уже внедрена модульная структура.

    Источники

    Оригинальная статья Эдди Османи: «Patterns For Large-Scale JavaScript Application Architecture».
    Та же статья на русском: «Паттерны для масштабируемых JavaScript-приложений».
    JavaScript Patterns — есть что почитать про модули и пространство имен, да и вообще советую тем, кто по каким-то причинам не знаком с этой книгой.

    Спасибо за внимание. Буду признателен за комментарии по улучшению статьи.

    лего дупло модульный игрушечный дом

    Комментарии запрещены.

    Навигация по записям