Организация проекта в FAiL
Активно дорабатывается.
Структура (общее представление)
Для ~/src/ (изначальная для FAiL):
- globals.css
- layout.tsx
- package.json
- .gitignore
- LICENSE
- README.md
Основные каталоги
Речь не про App, Shared, Widgets или подобным, а про каталоги в рутовой области.
Данная область имеет структуру, схожую с:
-
docsДиректория с документацией (может быть вынесено).
-
publicПапка со статичными ресурсами сервера. Внутри Вы можете встретить
favicon.icoи другие интересности, если, конечно, они там есть 😅 -
src(рабочая)Рабочая директория со всеми основными файлами.
Этого каталога может не быть, если вы используйте в качестве рабочей папки
~/, а не~/src. -
.nextиnode_modulesПервая папка содержит билд проекта, вторая зависимости (“Да ладно!”). Они обязаны быть включены в
.gitignoreфайл.
Next.js | Source Folder
Структура
(архитектура )
проекта в Next.js при использовании App Router обычно имеет следующий
или схожий с ним вид (рассмотрим внутри src каталога):
-
appСердце вашего сайта! Тут и страницы, и слои, и ассеты к ним.
-
shared/configКонфигикурации приложения. Этот каталог может содержаться на уровень выше, но в рамках нашего проекта – внутри
src. -
...security(файлы)Сюда обычно входят такие файлы, как
middleware.tsиauth.ts.
Next.js | Роутинг
Вам уже известно, как работает App Router в Next.js. Если нет, то почитайте, но а сейчас мы рассмотрим только ту часть, которая нам действительно необходима.
Иерархия внутри src/app выглядит следующим образом:
-
layout.tsx(файл)Рутовый слой.
-
page.tsx(файл)Главная страница приложения, отображаемая через URL
~/. Обычно выносится в подкаталог по типу “(home)” или “(landing)” (~/src/app/(home)/page.tsx). -
...pagesПапки с вложенными
page.tsxи, при необходимости,layout.tsx. Помимо этого может содержать_uiкаталог с компонентами страницы, или_lib, а также такие же вложенные подпапки.Обратите внимание, что большие и/или часто переиспользуемые компоненты и их логику стоит выносить в такие папки, как
widgetsиshared.
Next.js | Вложенность
Я не придумал, как ещё обозвать этот раздел, кроме как “вложенность”
или “дочерние папки страницы”. Хорошо, он будет о том, как Вы
догадались, о каталогах внутри src/app/[page], где page – имя
страницы (home или profile, к примеру).
Каталог может содержать внутри себя:
Префикс _ в Next.js App Router подсказывает компилятору
(сборщику), что эти папки/пути следует удалить из URL. Другими
словами, код внутри ни в коем случае не будет рассматриваться, как
страница, даже если файл будет называться page.tsx.
-
_uiКомпоненты страницы и её составляющие: форматеры данных, стили.
-
_apiКод, взаимодействующий с Backend-частью приложения и другие связанные данные с ним, как типы данных, модели.
-
_libБиблиотечный код, который нужен другим модулям в сегменте.
-
_hooksСпецифичные для страницы или слоя хуки React. Обычно туда выносятся хуки со вспомогательной логикой, в то время как в тот же каталог
_libчто-то более “обобщённое”. -
_configКонфигурация свойственная только для страницы и её компонентов.