Encodera

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

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

Оглавление

Создание проекта

Новый проект создаётся одной командой. Она скачивает стартовый набор (starter kit) — заготовку приложения с уже настроенными пакетами — и устанавливает зависимости.

Команда создания

Откройте терминал в папке, где будут лежать проекты, и выполните:

npm init adonisjs@latest blog

Программа задаст несколько вопросов. Главный из них — какой стартовый набор взять:

НаборДля чего
WebСайт с HTML-страницами на шаблонах Edge
APIТолько JSON API, без страниц
SlimМинимальное ядро, всё остальное ставится вручную
InertiaСтраницы на React или Vue поверх AdonisJS

Для блога выберите Web. Набор можно указать сразу флагом: npm init adonisjs@latest blog -- --kit=web. Затем программа спросит базу данных — для начала подойдёт SQLite, ей не нужен отдельный сервер, — и способ входа: выберите session.

Запуск

cd blog
node ace serve --hmr

Команда запускает сервер разработки. Откройте http://localhost:3333 — появится стартовая страница AdonisJS. Флаг --hmr означает, что после правки файла сервер подхватит изменения без перезапуска. Остановить сервер можно сочетанием Ctrl+C. Та же команда записана в package.json как npm run dev.

Папки проекта

blog/
├── app/
│   ├── controllers/     контроллеры
│   ├── exceptions/      обработчик ошибок
│   ├── middleware/      middleware
│   ├── models/          модели Lucid
│   └── validators/      правила проверки форм
├── bin/                 файлы запуска: server.ts, console.ts, test.ts
├── config/              настройки пакетов
├── database/
│   └── migrations/      миграции
├── resources/
│   ├── views/           шаблоны Edge
│   ├── css/  js/        стили и скрипты для Vite
├── start/
│   ├── routes.ts        маршруты
│   ├── kernel.ts        список middleware
│   └── env.ts           проверка переменных окружения
├── tests/               тесты
├── .env                 настройки этого компьютера
├── adonisrc.ts          настройки самого фреймворка
├── ace.js               вход в консоль Ace
└── package.json

Некоторых папок, например validators, сразу может не быть: они появятся, когда вы создадите первый файл такого типа.

Короткие импорты

В package.json есть раздел imports. Он задаёт короткие пути, которые начинаются с #:

// app/controllers/posts_controller.ts
import Post from '#models/post'
import { createPostValidator } from '#validators/post'

#models/post означает файл app/models/post.ts. Так не нужно писать длинные пути вида ../../models/post.js.

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

Команда node ace serve работает только внутри папки проекта: там лежит файл ace.js. Если запустить её из родительской папки, Node.js сообщит, что не может найти модуль ace.js. Сначала перейдите в проект командой cd blog.

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

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