Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Оглавление

Что такое 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 проходит одни и те же шаги:

  1. Браузер обращается к адресу, например /posts.
  2. Роутер находит маршрут для этого адреса в файле start/routes.ts.
  3. Запрос проходит через middleware — проверки вроде «вошёл ли пользователь».
  4. Маршрут вызывает метод контроллера.
  5. Контроллер берёт данные через модель и передаёт их в шаблон Edge.
  6. Готовая HTML-страница возвращается в браузер.

Каждому шагу посвящён отдельный урок.

Пример курса

Через весь курс проходит один проект — блог. В нём будут статьи, комментарии к ним и пользователи, которые регистрируются, входят на сайт и пишут статьи. К концу курса у блога появятся загрузка обложек, письма, JSON API и тесты.

Частая ошибка

Многие примеры в интернете написаны для AdonisJS 5: в них Route.get(...) с большой буквы и импорты вида @ioc:Adonis/Core/Route. В шестой версии такой код не работает. Ищите документацию и примеры для версии 6 — в них импорты начинаются с @adonisjs/... или #, например import router from '@adonisjs/core/services/router'.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.