AdonisJS, o primo do Laravel

Há um tempo eu fiz uma aplicação com o backend todo em NodeJS, então utilizei o framework ExpressJS. Mas confesso, não curti muito.

Esse ano, 2020, conheci o AdonisJS, um framework Javascript muito, muito, muito mesmo, parecido com o Laravel. De cara já virou meu framework node favorito. então resolvi fazer essa publicação para apresentá-lo à vocês.

Atualmente o AdonisJS está na versão 4 e se você já conhece o Laravel, ficará bem a vontade em programar nesse framework.

Veja por exemplo como é uma migration:

const Schema = use('Schema')

class ClientSchema extends Schema {
  up () {
    this.create('clients', (table) => {
      table.increments()
      table.string('name', 128).notNullable()
      table.string('cpf', 16).nullable().unique()
      table.string('phone', 32).nullable()
      table.timestamps()
    })
  }

  down () {
    this.drop('clients')
  }
}

Agora repare como é um controller:

const { validate } = use('Validator')
const Client = use('App/Models/Client')

class ClientController {
  async index ({ request }) {
    const { page } = request.get('page')
    const clients = await Client.query()
      .orderBy('name')
      .paginate(page, 10)
    return clients
  }
  async store ({ request, response }) {
    // 
  }
  async show ({ params }) {
    // 
  }
  async update ({ params, auth, request, response }) {
    //
  }
  async destroy ({ params, auth, response }) {
    //
  }
}

Veja como é a estrutura de pastas, veja a semelhança:

.
├── app/
  ├── Controllers
  ├── Middleware
├── config/
  ├── app.js
  ├── auth.js
  └── ...
├── database/
  ├── migrations/
  ├── seeds/
  └── factory.js
├── public/
├── resources/
  ├── ...
  └── views/
└── storage/

O mais legal disso é reaproveitar o conhecimento. Para quem trabalha com o Laravel, poder mexer com NodeJS de forma bem confortável é bastante animador, principalmente para quem quer fazer uma aplicação desktop, com Electron.