Adonis это как понятно из названия статьи, это подобие Laravel.
На удивление не так много есть статей на эту тему, а уж тем более и проектов в рунете.
Последнее время я полностью начинаю переходить на js, и думаю что не стоит объяснять почему. Да PHP все так же крепко сидит на рынке и работы на нем будет еще много при том что нас уже ждет PHP 8, что конечно быстрее и удобнее по сравнению с 7 версией но все же node.js рвет и мечет, хоть и имея ряд неудобств, но о сравнении php и node чуть позже. В моем случае переход неминуем.
На самом деле это все же не плохой плюс для прогеров Laravel, иметь еще один фреймворк на котором можно создавать приложения с такой же простотой как и на "ларе" да еще и с похожей структурой, подобием artisan, подобным кодом роутера, файлами миграции таблиц, модели, отношения между моделями и тд.
Первое - структура приложения
├── app
│ ├── Controllers
│ └── Http
│ ├── Middleware
│ ├── Models
│ └──Traits
├── bootstrap
├── config
├── database
│ ├── migrations
│ └── seeds
├── providers
├── public
├── resources
│ └── views
├── storage
├── start // Внутри находятся app.js routers.js и kernel.js
Ну очень схоже со структурой Laravel.
Второе - подобие artisan.
Как я и сказал выше у adonis есть очень удобная вещь ace, для создания как своих команд так и использования стандартных, на сегодняшний день через ace можно производить операции миграции с почти таким же синтаксисом как у laravel.
Laravel
"php artisan migrate"
adonis
"node ace migration:run" || "adonis migration:run"
Мне же проще использовать именно построение через "adonis".
По мимо команд миграций, adonis так же умеет создавать контроллеры, модели, прослойки или допустим загружать для себя нужные пакеты на примере "adonis install @adonisjs/session". Именно artisan стал решающим фактором в выборе Laravel как основного php фреймворка для себя 4 года назад, выбор конечно был между yii популярным на тот момент и конечно же Laravel 5. Поэтому думаю что такая фича у adonis уже большой плюс к началу его использования.
Третье - Роутинг / Модели / Контроллеры
Роутинг, модели и контроллеры почти что идентичны виду Laravel Конечно так же есть схожесть с Kernel конфигами и миграциями . Начнем с роутера
Laravel
Route :: get ( '/user' , 'UserController.index');
Adonis
Route . get ( 'users' , 'UserController.index' )
Далее модели
Laravel
<?php
namespace App ;
use Illuminate\Database\Eloquent\ Model ;
class User extends Model
{
}
?>
Adonis
'use strict'
const Model = use ( 'Model' )
class User extends Model
{
}
module . exports = User
И конечно же контроллеры
Laravel
<?php
namespace App\Http\Controllers ;
use Illuminate\Support\Facades\ Auth ;
use Illuminate\Http\ Request ;
use App\ User ;
class UsersController extends Controller
{
}
?>
Adonis
'use strict'
const User = use ( 'App/Models/User' )
class UserController
{
}
module . exports = UserController
Более подробно о реализации работы моделей можно прочесть тут , что такие же как у лары что очень удобно.
Так же как и Laravel, adonis может быть исключительно обработчиком api запросов, или же выступать full-stack приложением, так же есть уменьшенная версия с урезанным функционалом - slim.
Из коробки уже идет поддержка jwt авторизации что крайне упрощает старт разработки приложений. Не говоря уже о CSRF защиты и удобной работе с CORS, для многих до сих пор решение проблемы "CORS:ERROR" составляет трудности, даже на Laravel, у Adonis в этом плане даже проще.
Как и говорили сами разработчики они хотели сделать аналог Laravel на js и можно смело сказать что у них это получилось.
В дальнейшем я выпишу плюсы и минусы в работе с adonis в сравнению с другими фреймворками, а пока что спасибо за прочтение!