Хочу поделиться с вами относительно новым архитектурным подходом, который никого не оставит равнодушным. Feature-Sliced Design (FSD) — это архитектурная методология для проектирования frontend-приложений. Проще говоря, это свод правил и соглашений по организации кода. Главная цель методологии — сделать проект понятным и структурированным, особенно в условиях регулярного изменения требований бизнеса. Данная архитектура будет полезна для средних и больших проектов, которые будут в вашем распоряжении несколько лет. Однако, если у вас уже имеется проект каких-либо размеров, не стоит беспокоиться. Вы так же сможете, хоть и чуть дольше, если бы писали с нуля, отрефакторить ваше приложение на новую архитектуру (как это сделать смотреть в документации). Благодаря правильно заложенному фундаменту вашего приложения вам будет удобно, а главное быстро в нем работать и разрабатывать новые фичи, чему несомненно будет рад ваш бизнес. Одна из главных особенностей этого подхода - методология не привязанная к конкретному языку программирования, UI-фреймворку или менеджеру состояния — подойдет абсолютно любой. Одним из минусов является высокий порог входа. Разработчик должен понимать как работает этот подход и при разработке очередного модуля вам придется подумать (а как думать?) о правильности его расположения.
Это здорово для проекта, который состоит из самого себя. Завидую таким задачам.
Схема действительно интересная, но хорошо работает когда структура и функционал проекта понятны и прозрачны.
Расскажу про опыт и боль большого проекта, которые состоят и некоего количества разных, но похожих проектов. Может будет кому-то полезно.
Основной проект голый, то есть дает примитивный функционал в виде формы авторизации. Рабочий проект собирается из крупных модулей, которые независимы друг от друга.
Есть встроенные базовые модули (авторизация, api, базовый ui, базовая админка), есть подключаемые модули. У каждого модуля есть публичная часть - компоненты, которыми он может «поделиться» с другими модулями.
Оркестрация осуществляется на уровне ядра, которое подключает необходимые модули, хранит в себе конфиги, состояния и доступные извне компоненты модулей.
Сами по себе модули независимые, но могут использовать как куски базовых модулей, так и интегрироваться в другие модули. Все взаимодействие модулей осуществляется через ядро. К примеру - к стандартной админке добавляетсяся администрирование из кастомного модуля. Или один из подключённых модулей расширяет функционал другого модуля. При этом отключение какого-либо модуля не ломает проект, он просто теряет функциональность.
Конфигурируется одним файлом, который включает в себя набор нужных модулей и кастомные настройк .
При сборке в бандл включаются только база и модули из конфига.
Звучит как повод уволиться, я на этапе собеседования пытаюсь выяснить обычно насколько всё перевязано через вопросы о UI-ките, там обычно всякая хуйня быстро вылазит
Отличный пост!
Какой то недохабр выходит из этого vc.ru.
"Спасибо за внимание" вот и вся суть статьи.
Ну хоть пример бы какой дали. Чем допустим это отличается от того же MVP?