Сообщение #2 zyxer » 02.10.2019, 16:07
Действительно есть смысл обсудить этот вопрос.
Модуль, в разрезе разговора об модульном OkayCMS это программная единица, выполняющая определенную задачу (можно назвать это доработкой).
Модуль лежит отдельно от основного кода системы, а система в свою очередь, позволяет модулю "вклиниться" в основной поток.
Модуль не обязательно должен быть связан с другими модулями, но может это делать.
Ничего не ясно ))
На примере сравнения со вторым окаем (не модульным). Нам чтобы сделать доработку, нужно добавить код в файлы A, B, C.
Т.е. нужно реально редактировать эти файлы. Проблема в обновлении, когда обновился файл системы, его сложно "накатить" на такой же файл
с модулем. А если в одном месте стоит сразу несколько модулей подряд, еще тяжелее.
+ ставить второй модуль уже тяжелее (т.к. мы обычно ориентируемся на "соседние" строки).
и ещё одна проблема (о ней я писал ранее), это когда выходит обновление системы (пусть плёвое, но "соседние" строки уже изменены),
становится тяжелее устанавливать такой модуль. И сама установка модуля сводится к тому, что нужно отредактировать много фалов и
изменения структуры БД руками.
Мне кажется с этим можно жить, но если есть вариант решить эти проблемы, то чего бы их не решить?
Да, согласен, модульность вносит определенные ограничения, и возможно немного усложняет разработку самого модуля (но это не точно).
Так вот что мы понимаем под модульностью. Это возможность написать код (который не особо отличается от кода который ранее писали
прям в контроллере или еще где) и используя определенные системные вещи (наверное их можно назвать API), указать в файле
инициализации модуля какой кусок в какой момент должен выполняться. Другими словами можно из директории модуля "вклиниться"
в выполнение основного потока приложения.
Также из модуля можно создать свой контроллер со своим дизайном, своими стилями и js-сом (которые объединяться с основным)
и все это хранить в директории модуля. Так же их модуля можно добавлять свои роуты, при этом не редактирую основной файл роутов.
Я думаю суть ясна))
Ещё раз, мы пытаемся создать максимально гибкую систему, чтобы можно было создать максимально разнообразные доработки,
но я уверен на 100% что найдется такая доработка, для создания которой не хватит той самой гибкости, тогда уже будем смотреть.
Либо мы что-то добавим в систему и сделаем такую гибкость, либо эта доработка не может быть выполнена модульностью.
В таком случае нужно будет делать эту доработку прямо в коде системы, как это не печально.
Мне кажется я немного внёс ясность в вопрос "что такое модульность в OkayCMS"))
Все текущие модули лежат в директории Okay/Modules/OkayCMS/. Да их не много, они будут пополняться, на второй окай же сейчас много модулей, и на третий будут)). Кстати OkayCMS в пути, это разработчик модулей. Как в композере, идет vendor/package.
Действительно есть смысл обсудить этот вопрос.
Модуль, в разрезе разговора об модульном OkayCMS это программная единица, выполняющая определенную задачу (можно назвать это доработкой).
Модуль лежит отдельно от основного кода системы, а система в свою очередь, позволяет модулю "вклиниться" в основной поток.
Модуль не обязательно должен быть связан с другими модулями, но может это делать.
Ничего не ясно ))
На примере сравнения со вторым окаем (не модульным). Нам чтобы сделать доработку, нужно добавить код в файлы A, B, C.
Т.е. нужно реально редактировать эти файлы. Проблема в обновлении, когда обновился файл системы, его сложно "накатить" на такой же файл
с модулем. А если в одном месте стоит сразу несколько модулей подряд, еще тяжелее.
+ ставить второй модуль уже тяжелее (т.к. мы обычно ориентируемся на "соседние" строки).
и ещё одна проблема (о ней я писал ранее), это когда выходит обновление системы (пусть плёвое, но "соседние" строки уже изменены),
становится тяжелее устанавливать такой модуль. И сама установка модуля сводится к тому, что нужно отредактировать много фалов и
изменения структуры БД руками.
Мне кажется с этим можно жить, но если есть вариант решить эти проблемы, то чего бы их не решить?
Да, согласен, модульность вносит определенные ограничения, и возможно немного усложняет разработку самого модуля (но это не точно).
Так вот что мы понимаем под модульностью. Это возможность написать код (который не особо отличается от кода который ранее писали
прям в контроллере или еще где) и используя определенные системные вещи (наверное их можно назвать API), указать в файле
инициализации модуля какой кусок в какой момент должен выполняться. Другими словами можно из директории модуля "вклиниться"
в выполнение основного потока приложения.
Также из модуля можно создать свой контроллер со своим дизайном, своими стилями и js-сом (которые объединяться с основным)
и все это хранить в директории модуля. Так же их модуля можно добавлять свои роуты, при этом не редактирую основной файл роутов.
Я думаю суть ясна))
Ещё раз, мы пытаемся создать максимально гибкую систему, чтобы можно было создать максимально разнообразные доработки,
но я уверен на 100% что найдется такая доработка, для создания которой не хватит той самой гибкости, тогда уже будем смотреть.
Либо мы что-то добавим в систему и сделаем такую гибкость, либо эта доработка не может быть выполнена модульностью.
В таком случае нужно будет делать эту доработку прямо в коде системы, как это не печально.
Мне кажется я немного внёс ясность в вопрос "что такое модульность в OkayCMS"))
Все текущие модули лежат в директории Okay/Modules/OkayCMS/. Да их не много, они будут пополняться, на второй окай же сейчас много модулей, и на третий будут)). Кстати OkayCMS в пути, это разработчик модулей. Как в композере, идет vendor/package.
Всё сказанное мной, является лично моим мнением, и не является официальной позицией OkayCMS