Skip to Content
⚠ Документация в разработке

Введение в архитектуру

Принципы от FSD

FAiL была вдохновлена Feature-Sliced Design (FSD) . Обязательно взгляните — лишним не будет!

Проект | Термины

Note

Вам может пригодится оригинальная статья .

Рутовая область

Рутовая (от англ. слова “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, состоят из сегментов, как писалось ранее, группируя код по его назначению. Имена сегментов не зафиксированы стандартом, но существуют несколько общепринятых имен  для наиболее распространенных целей.

Мы рассмотрим детальнее используемые в нашей (или для нашей) спецификации имена в будущем.

Следующие шаги

Дальше вам будет предложено:

  1. Изучить структуру проекта в App Router
  2. Изучить соглашение команды о стиле кодинга
  3. Изучить нейминг-паттерны (и не только)
Last updated on