Оглавление
AdonisJS
Полноценный фреймворк в духе Laravel: маршруты, контроллеры, ORM Lucid, шаблоны Edge и авторизация.
1.Начало работы
- Что такое AdonisJSЗачем нужен фреймворк AdonisJS, из чего он состоит и какой путь проходит запрос.
- Создание проектаКак создать проект AdonisJS из стартового набора, запустить его и что лежит в его папках.
- Консоль AceКоманды node ace: запуск сервера, создание файлов, установка пакетов и своя команда.
- Настройки и переменные окруженияФайл .env, проверка переменных в start/env.ts и файлы настроек в папке config.
2.Маршруты и контроллеры
- МаршрутыКак связать адрес страницы с кодом в файле start/routes.ts и какие HTTP-методы бывают.
- Параметры маршрутовИзменяемые части адреса: обязательные и необязательные параметры и проверка их формата.
- Имена маршрутов и группыКак дать маршруту имя, строить ссылки по имени и объединять маршруты в группы с общим префиксом.
- КонтроллерыКак вынести обработку запросов из файла маршрутов в классы-контроллеры и подключить их к маршрутам.
- Контекст запроса: request и responseЧто лежит в объекте HttpContext: чтение данных запроса через request и отправка ответа через response.
3.Шаблоны Edge
- Шаблоны EdgeКак вывести HTML-страницу из контроллера: файлы .edge, вывод переменных, условия и циклы.
- Макет страницы и подшаблоныОбщая разметка для всех страниц через компонент-макет, слоты и подключение подшаблонов через @include.
- Компоненты EdgeПовторяющиеся блоки страницы как компоненты: свойства, слоты по умолчанию и именованные слоты.
- Статические файлы и ViteГде хранить картинки и иконки, как подключить CSS и JavaScript через Vite и тег @vite.
4.База данных
- Подключение базы данныхУстановка ORM Lucid, настройки в config/database.ts и подключение к SQLite или PostgreSQL.
- МиграцииКак описать таблицы базы данных в коде, применить и откатить изменения командами Ace.
- Модели LucidРабота с таблицами через классы-модели: описание столбцов, создание, чтение, изменение и удаление записей.
- Запросы в LucidКонструктор запросов модели: условия where, сортировка, лимиты, постраничный вывод и подсчёт.
- Связи между моделямиСвязи hasMany и belongsTo на примере статей и комментариев, предзагрузка и создание связанных записей.
- Сидеры и фабрикиКак наполнить базу начальными и тестовыми данными: сидеры, фабрики моделей и связанные записи.
5.Формы и пользователи
- Валидация с VineJSПроверка данных формы перед сохранением: валидаторы VineJS, правила и сообщения об ошибках.
- Формы, CSRF и flash-сообщенияФорма добавления статьи: защита CSRF, вывод ошибок валидации, старые значения полей и сообщение об успехе.
- СессииКак хранить данные посетителя между запросами: методы session, драйверы и настройки в config/session.ts.
- АутентификацияРегистрация, вход и выход пользователей через session guard пакета @adonisjs/auth.
- Авторизация с BouncerКак проверить права пользователя: способности и политики Bouncer, проверки в контроллере и в шаблоне.
- MiddlewareКод, который выполняется до и после обработчика маршрута: создание middleware, стеки в start/kernel.ts и защита групп маршрутов.
6.Развитие приложения
- Загрузка файлов и DriveКак принять файл из формы, проверить размер и тип и сохранить его через пакет Drive.
- Отправка писемПакет @adonisjs/mail: настройка SMTP, письмо с шаблоном Edge, отправка в фоне и классы писем.
- События и слушателиКак отделить побочные действия от контроллера: классы событий, слушатели и их регистрация в start/events.ts.
- JSON API и токены доступаМаршруты API, которые возвращают JSON, выдача токенов доступа и защита маршрутов охранником access_tokens.
- Обработка ошибокГлобальный обработчик исключений app/exceptions/handler.ts, страницы ошибок 404 и 500 и свои исключения.
- Тесты с JapaФункциональные тесты страниц и API: команда node ace test, HTTP-клиент, база данных в тестах и вход пользователя.
- Выкладка на серверСборка проекта командой node ace build, запуск build/bin/server.js, переменные окружения и миграции на сервере.