Что такое AdonisJS
AdonisJS — фреймворк для серверных веб-приложений на Node.js и TypeScript. В нём уже есть всё, что нужно сайту: маршруты, контроллеры, шаблоны, работа с базой данных, валидация, вход пользователей. Если вы знакомы с Laravel, то узнаете многое: AdonisJS устроен по тем же идеям, только на JavaScript.
Курс написан для AdonisJS 6. Код в нём — TypeScript с ES-модулями (import и export), которые вы уже видели в учебнике по JavaScript.
Чем он отличается от Express
Express даёт только маршруты и промежуточные обработчики, а всё остальное вы собираете из отдельных библиотек. AdonisJS — фреймворк «всё включено»: части подобраны заранее, настроены и работают вместе.
| Задача | Что использует AdonisJS |
|---|---|
| Маршруты и контроллеры | встроенный роутер |
| HTML-страницы | шаблонизатор Edge |
| База данных | ORM Lucid |
| Проверка данных форм | библиотека VineJS |
| Вход и права | пакеты @adonisjs/auth и @adonisjs/bouncer |
| Команды в терминале | консоль Ace |
| Тесты | Japa |
ORM (Object-Relational Mapping) — способ работать с таблицами базы через классы и объекты, а не через SQL-строки.
Что понадобится
Нужен Node.js версии 20.6 или новее и npm, который ставится вместе с ним. Проверьте версии в терминале:
node -v
npm -vЕсли первая команда показывает версию ниже 20.6, обновите Node.js с сайта nodejs.org.
Путь запроса
Каждый запрос в приложении AdonisJS проходит одни и те же шаги:
- Браузер обращается к адресу, например
/posts. - Роутер находит маршрут для этого адреса в файле
start/routes.ts. - Запрос проходит через middleware — проверки вроде «вошёл ли пользователь».
- Маршрут вызывает метод контроллера.
- Контроллер берёт данные через модель и передаёт их в шаблон Edge.
- Готовая HTML-страница возвращается в браузер.
Каждому шагу посвящён отдельный урок.
Пример курса
Через весь курс проходит один проект — блог. В нём будут статьи, комментарии к ним и пользователи, которые регистрируются, входят на сайт и пишут статьи. К концу курса у блога появятся загрузка обложек, письма, JSON API и тесты.
Частая ошибка
Многие примеры в интернете написаны для AdonisJS 5: в них Route.get(...) с большой буквы и импорты вида @ioc:Adonis/Core/Route. В шестой версии такой код не работает. Ищите документацию и примеры для версии 6 — в них импорты начинаются с @adonisjs/... или #, например import router from '@adonisjs/core/services/router'.