Пришло время разобраться в Nuxt.js глубже. На работе всё чаще появляются задачи, связанные с Nuxt, поэтому базовых знаний Vue и TypeScript уже недостаточно — хочется понимать фреймворк не только на уровне решения конкретных задач.
Базу по Vue и TypeScript я уже получил на курсах Дмитрия Лаврика. А вот полноценного курса по Nuxt у него сейчас нет: многие простые задачи всё чаще берут на себя AI-агенты, и спрос на такие курсы заметно снизился.
Поэтому решил самостоятельно пройти Nuxt с самого начала и разобраться в его основных возможностях и внутренних принципах. В этом мне помогли те же AI-агенты - с их помощью я составил программу обучения примерно на 12 часов.
Публикую свой вариант этого плана — возможно, он пригодится и тем, кто тоже хочет системно разобраться в Nuxt.js.
План обучения Nuxt.js: 12-20 часов
Блок 1. Основы Nuxt
Урок 1. Что такое Nuxt и зачем он нужен
Теория
Разобраться:
- чем Nuxt отличается от обычного Vue;
- SSR, CSR, SSG — что это и когда используется;
- структура Nuxt-приложения;
- что происходит при открытии страницы;
- зачем нужен Nitro;
- что Nuxt дает поверх Vue.
Практика
Создать Nuxt-проект и сделать простые страницы:
/— Главная;/about— О проекте.
Посмотреть HTML, который приходит от сервера.
Чек-лист
Урок 2. Структура Nuxt-проекта
Теория
Разобрать:
app/ components/ composables/ layouts/ middleware/ pages/ plugins/ server/ public/ assets/ nuxt.config.ts
Что где должно находиться и почему.
Практика
Создать структуру:
pages/ index.vue about.vue components/ AppHeader.vue AppFooter.vue layouts/ default.vue
Подключить layout и компоненты.
Чек-лист
Урок 3. Pages и routing
Теория
Изучить:
- file-based routing;
- динамические маршруты;
- вложенные маршруты;
- catch-all маршруты;
- параметры маршрута;
navigateTo;useRoute.
Например:
pages/
blog/
index.vue
[slug].vue
Практика
Сделать мини-блог:
/blog /blog/hello-nuxt /blog/ssr /blog/vue
Показывать slug на странице.
Чек-лист
Урок 4. Layouts, ошибки и страницы состояния
Теория
Разобрать:
- layouts;
error.vue;createError;showError;clearError;- 404;
- loading/error состояния.
Практика
Сделать:
- общий layout;
- страницу ошибки;
- 404;
- кнопку возврата на главную.
Чек-лист
Блок 2. Routing и данные
Урок 5. useFetch
Теория
Изучить useFetch() и понять:
- SSR-fetching;
- hydration;
data;error;status;pending;lazy;server.
Практика
Подключить публичный API:
https://jsonplaceholder.typicode.com/posts
Вывести список постов.
Чек-лист
Урок 6. $fetch и useAsyncData
Теория
Разобрать различия:
$fetch() useFetch() useAsyncData()
Главный вопрос — когда использовать каждый вариант.
Практика
Одну и ту же задачу реализовать двумя способами:
const { data } = await useAsyncData(...)
и:
const data = await $fetch(...)
Сравнить поведение при SSR.
Чек-лист
Урок 7. Query params и фильтрация
Теория
Разобрать:
useRoute() navigateTo() useRouter()
и работу с URL:
/products?page=2&sort=price
Практика
Сделать страницу товаров:
/products?page=1 /products?page=2
Добавить сортировку и фильтр.
Чек-лист
Урок 8. Динамические страницы + реальные данные
Теория
Связать routing и API:
URL ↓ route.params ↓ API ↓ data ↓ page
Практика
Создать полноценную страницу:
/blog/[slug]
с загрузкой статьи по slug.
Чек-лист
Блок 3. Server-side Nuxt
Это один из самых важных блоков для перехода от Vue-разработчика к Nuxt-разработчику.
Урок 9. Nitro и server directory
Теория
Разобрать:
server/ api/ routes/ middleware/ utils/
Что такое Nitro и зачем Nuxt содержит backend.
Практика
Создать endpoint:
/api/posts
который возвращает JSON.
Чек-лист
Урок 10. API endpoints
Теория
Изучить:
defineEventHandler() getQuery() readBody() getRouterParam()
Методы:
GET POST PUT DELETE
Практика
Сделать CRUD:
GET /api/posts GET /api/posts/:id POST /api/posts PUT /api/posts/:id DELETE /api/posts/:id
Можно пока хранить данные в памяти.
Чек-лист
Урок 11. Server middleware и авторизация
Теория
Изучить:
server/middleware
и cookies.
Понять архитектуру:
Browser ↓ Nuxt ↓ Server middleware ↓ API
Практика
Сделать условную авторизацию:
POST /api/login GET /api/profile POST /api/logout
Сохранять токен в cookie.
Чек-лист
Урок 12. Runtime Config и переменные окружения
Теория
Разобрать:
runtimeConfig
и:
.env NUXT_
Понять:
- что можно отдавать клиенту;
- что должно оставаться только на сервере;
- где хранить API keys.
Практика
Добавить:
API_SECRET= API_URL=
И использовать секрет только на сервере.
Чек-лист
Блок 4. Архитектура Nuxt-приложения
Урок 13. Composables
Теория
Разобрать auto-import и composables.
Например:
useAuth() useApi() useProducts()
Понять, что туда помещать, а что не помещать.
Практика
Создать:
useAuth() useProducts()
и вынести туда общую логику.
Чек-лист
Урок 14. Plugins
Теория
Изучить:
plugins/
и:
defineNuxtPlugin()
Когда plugin нужен, а когда достаточно composable.
Практика
Создать небольшой plugin, например:
$api
для централизованной работы с API.
Чек-лист
Урок 15. Middleware маршрутов
Теория
Разобрать:
middleware/ auth.ts guest.ts
и:
defineNuxtRouteMiddleware()
Виды:
global named
Практика
Сделать:
/login /dashboard /profile
/dashboard доступен только авторизованному пользователю.
Чек-лист
Урок 16. Состояние приложения
Теория
Разобрать:
useState()
и сравнить его с Pinia.
Когда достаточно:
useState('user')
а когда нужна полноценная store-архитектура.
Практика
Создать:
useState('user')
useState('cart')
и связать их между несколькими страницами.
Чек-лист
Блок 5. SEO, производительность и production
Урок 17. SEO в Nuxt
Теория
Изучить:
useHead() useSeoMeta()
Разобрать:
title description og:title og:description og:image canonical
Практика
Сделать динамические SEO-метаданные для:
/blog/[slug]
Чек-лист
Урок 18. SSR / SSG / prerender
Теория
Глубже разобраться в:
SSR SSG prerender
и понять, какой подход выбирать под разные проекты.
Практика
Сделать:
/blog
статически генерируемой страницей.
Проверить результат после build.
Чек-лист
Урок 19. Performance
Теория
Разобрать:
- lazy components;
- lazy routes;
- image optimization;
- code splitting;
- payload;
- hydration;
<ClientOnly>.
Особенно важно понять hydration.
Практика
Взять предыдущий проект и:
- вынести тяжелый компонент в lazy;
- использовать
<ClientOnly>; - оптимизировать изображения;
- проверить HTML и JS bundle.
Чек-лист
Урок 20. Caching и производительность server API
Теория
Изучить:
- кеширование;
cachedEventHandler;- HTTP cache;
- server-side cache;
- Nitro storage.
Практика
Для:
/api/posts
сделать кеширование ответа.
Сравнить первый запрос и последующие.
Чек-лист
Блок 6. Production и итоговый проект
Урок 21. Конфигурация проекта
Теория
Разобрать:
nuxt.config.ts
Важные настройки:
modules runtimeConfig devtools css vite nitro routeRules
Особенно:
routeRules
Практика
Настроить разные правила для:
/ /blog/** /admin/** /api/**
Например, кеширование или prerender.
Чек-лист
Урок 22. Deployment
Теория
Разобрать жизненный цикл:
development ↓ build ↓ production
Команды:
npm run dev npm run build npm run preview
Изучить:
.output/
и варианты размещения Nuxt:
- Node server;
- Docker;
- serverless;
- static hosting.
Практика
Собрать проект:
npm run build
и запустить production-версию.
Чек-лист
Урок 23. Архитектура полноценного Nuxt-приложения
Теория
Разобрать архитектуру:
pages ↓ components ↓ composables ↓ services ↓ server/api ↓ database
Ответить на вопросы:
- где должна находиться бизнес-логика;
- где делать API;
- где хранить состояние;
- где использовать composable;
- где plugin;
- где middleware;
- как избежать «god component».
Практика
Спроектировать структуру проекта до написания кода:
pages/ components/ composables/ services/ stores/ server/ api/ services/ repositories/
Не превращать composables в место для всей бизнес-логики.
Чек-лист
Урок 24. Итоговый проект
Последнее занятие — сборка всего изученного вместе.
Проект
Сделать небольшое Nuxt-приложение каталога статей:
/ /articles /articles/[slug] /login /profile /admin
Что должно быть
Frontend:
- pages;
- dynamic routing;
- layouts;
- components;
- composables;
useStateили Pinia;useFetch.
Backend:
/api/auth/login /api/auth/logout /api/auth/me /api/articles /api/articles/:slug
Также:
- middleware;
- cookies;
- runtime config;
- SEO;
- Open Graph;
- SSR;
- обработка 404;
- loading/error;
- кеширование;
- production build.
Итоговый чек-лист
Результат обучения
После прохождения курса необходимо уверенно понимать:
Vue 3 ↓ Nuxt ├── Pages / Routing ├── SSR / SSG ├── useFetch / useAsyncData ├── SEO ├── Middleware ├── Composables ├── Plugins ├── State ├── Nitro │ └── API ├── Runtime Config ├── Caching └── Deployment
Цель — не просто знать API Nuxt, а уметь самостоятельно разработать и развернуть среднее Nuxt-приложение без постоянного обращения к документации за базовыми вещами.
Особый акцент стоит сделать на концепциях, которые принципиально отличаются от обычной Vue-разработки:
- SSR;
- hydration;
- data fetching;
- Nitro;
- server-side API;
- middleware;
- runtime config;
- SEO;
- production deployment.