Введение в архитектуру
Принципы от FSD
FAiL была вдохновлена Feature-Sliced Design (FSD) . Обязательно взгляните — лишним не будет!
Проект | Термины
Вам может пригодится оригинальная статья .
Рутовая область
Рутовая (от англ. слова “root”) область, или другими словами
папка/каталог, та, с которой начинается открытие проекта. Как
правило, внутри неё есть файлы: package.json, README.md; а также
папки: node_modules, dist или .next…
Другими словами — главный каталог. В дальнейшем путь до него мы будем
помечать подобно этому: ~/.
Подробнее можете прочитать тут.
Слои
Слой — ещё один каталог в проекте, содержащий внутри себя слайсы, о
которых будет расписано ниже. Он располагается либо по ~/, либо по
~/src, в зависимости от выбора места вашего каталого App (app).
Все слои по методологии FSD стандартизированы, но в FAiL их наименования отличаются от оригинальных (особенности App Router’а ):
-
App (приложение)
Основной каталог приложения. Могут быть вложены файлы
favicon.icoи подобные, а также роуты.*Состоит из сегментов напрямую.
-
Pages (страницы)Большие или необходимые части для каждой страницы. Из-за структуры Next.js по умолчанию (App Router) совмещено с App.
-
Widgets (виджеты)
Большие самодостаточные куски функциональности или интерфейсса, обычно реализующие целый пользовательский сценарий.
-
Features (возможности)
Повторно используемые реализации целых фич продукта, то есть действий, приносящих бизнес-ценность пользователю.
-
Entities (сущности)
Бизнес-сущности, с которыми работает проект, например user или product.
-
Shared
Переиспользуемый код, особенно когда он отделён от специфики проекта/бизнеса, хотя это не обязательно.
*Состоит из сегментов напрямую.
Спросите в чём прикол? В том, что модули на одном слое могут знать только о модулях строго ниже, в последствие, импортировать только с них.
Слайсы
Дальше у нас по глубине идут слайсы, состоящие из сегментов. Слайсы группируют код по его назначению, что помогает организовать проект и не затеряться в кодовой базе.
Слайсы можно называть как угодно, и создавать сколько угодно раз. Также слайсы на одном уровне не могут знать о слайсах на том же или уровнем выше. Это позволяет допиться сильной связанности, но слабой сцеплённости между ними.
Сегменты
Слайсы, а также слои App и Shared, состоят из сегментов, как писалось ранее, группируя код по его назначению. Имена сегментов не зафиксированы стандартом, но существуют несколько общепринятых имен для наиболее распространенных целей.
Мы рассмотрим детальнее используемые в нашей (или для нашей) спецификации имена в будущем.
Следующие шаги
Дальше вам будет предложено: