Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Работа модульных систем (https://javascript.ru/forum/misc/53793-rabota-modulnykh-sistem.html)

FanAizu 18.02.2015 12:38

Работа модульных систем
 
Проясните, пожалуйста, пару момент по модульным системам, например AMD:

1) если на странице нету какого-то модуля, который нужен для работы другого модуля, который уже есть на странице и ждет своего резолвинга, то модульная система скачивает файл этого
отсутствующего модуля с сервера и чтобы не делать кучу аякс запросов на сервер, разработчики используют тулзы, которые смотрят все зависимости всех модулей и собирают один js
файл со всеми модулями, который подключается вручную на страницу, чтобы не делать запросы на сервер?

2) как я понимаю, если несколько модулей зависят от одного и того же модуля, то все эти модули получат ссылку на одно и тоже экспортируемое значение из модуля, от которого
они все зависят? А что делать, если я хочу работать с разными копиями одного и того же модуля для каждого из зависящих модулей? Это возможно?

Спасибо.

FanAizu 21.02.2015 18:15

Слабаки...

tsigel 21.02.2015 21:41

1) в общих чертах - да. Только не обязательно подключать полученный файл вручную, на это есть системы сборки проектов типа grunt или gulp.
2) модуль экспортирует то, что вам надо и вы должны написать сами то, что вам надо. Это не обязательно примитивное значение, это может быть как объект так и копия объекта (чтобы у каждого была копия не меняющая исходный) или конструктор класса или синглтон. Все в ваших руках, стройте архитектуру.

FanAizu 21.02.2015 23:12

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

tsigel 22.02.2015 08:56

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


Часовой пояс GMT +3, время: 10:23.