Как в модульной системе грамотно делаются зависимости?
Прочитал я один блог, который жевал проблему современных фреймворков - дескать это громоздские конструкции с огромной кучей кода, который мало кому нужен. И вот жевал этот автор жевал эту тему и в конце дал решение - делайте модульную структуру вашего приложения. Кусочки, дескать, имеют собственные виды, модели и контроллеры и собираются воедино (наверное он имел в виду шину (в народе - массив, для олд-скула - одномерная матрица) событий или инструкций).
И вот как в этом случае последний слон ООП реализуется?
Скажем есть у меня модуль Messages - задача его хранить все методы сообщений об ошибках, колекционировать их, вести логи, а если задуматься - то даже делать трассировку.
Есть модуль Роутер - который разбивает строку адреса на куски и определяет - язык это значит, параметры товара, или кусок урла отвечающий за страницу.
И вот Роутер имеет ошибки, то есть он ЗАВИСИТ от модуля Messages.
Как же грамотно (чтобы без гемора в будущем) сделать такие зависимости?
В самой шине? В главном модуле? Или все зависимости подключаются прямо в файле модуля Роутера? А если через одну зависимости? К примеру есть модуль языков еще. И роутеру требуются ошибки, а ошибкам - языки. А языкам кстати говоря тоже ошибки требуются, для ведения логов, каких фраз нету.
И как тут сделать зависимости, чтобы они еще и подряд загрузились, как полагается? И без дублей.
Да пусть даже PHP. На Яваскрипте есть насколько я знаю разные готовые решения. Меня больше интересует эммм сам принцип. На блоках и стрелочках, чтобы понимать как оно создается
Спасибо.
Скажите, а вы разбирались как работают подобные системы? Я хочу получить что-ли разбор, как оно создается мб. Вот взять ПХП или Яваскрипт. На ПХП нужно подгрузить нужные классы (файлы) перед тем как выполнять этот.
На Яваскрипте там еще и игра с асинхронностью, то есть нужно подключить скрипты в моменте. То есть это как - один модуль загрузчик подключается в начале синхронно, а потом все остальное по мере необходимости суется в код через -> $.appendTo() ??
Григорий Васильков: я глубоко не копал, так что не могу Вам подробно все расписать. Знаю, что в случае с JS некоторые фрейморки поступают так: собирают код всех модулей и их зависимостей в один файл, минифицируют его. Мы так делаем в проекте с Dojo, для разработки используются исходнике, а при билде в production, все собирается в один файл. В принципе исходники все открыты, если есть жгучее желание разобраться - welcome!
Как-то так.