Saltar al contenido principal

Resumen de Adonis.js.

Descripción general de Adonis.js

Adonis.js es un framework de Node.js que permite a los desarrolladores construir aplicaciones web escalables y eficientes. Sigue el patrón MVC (Modelo-Vista-Controlador) y ofrece un conjunto robusto de características para simplificar el proceso de desarrollo. En este tutorial, exploraremos la historia, características y ejemplos de Adonis.js.

Historia

Adonis.js fue creado por ace, una empresa de desarrollo de software con sede en Rumania. Fue lanzado por primera vez en 2016 y ha ganado popularidad entre los desarrolladores debido a su simplicidad y rendimiento. El framework fue inspirado por Laravel, un popular framework de PHP, y toma prestados muchos conceptos de él.

Características

Echemos un vistazo a algunas de las características clave de Adonis.js:

1. Enrutamiento

Adonis.js proporciona un sistema de enrutamiento poderoso que permite a los desarrolladores definir rutas para su aplicación. Aquí tienes un ejemplo de cómo definir una ruta simple:

Route.get('/', ({ response }) => {
return response.send('Hola Mundo');
});

En este ejemplo, definimos una ruta GET para la URL raíz ("/") que devuelve un mensaje "Hola Mundo".

2. Middleware

El middleware en Adonis.js proporciona una forma de manejar las solicitudes y respuestas antes o después de que lleguen al controlador de ruta. Ayuda a implementar preocupaciones transversales como la autenticación, validación, etc. Aquí tienes un ejemplo de un middleware que registra la URL de la solicitud:

class LogRequest {
async handle({ request }, next) {
console.log(`URL de la solicitud: ${request.url()}`);
await next();
}
}

Para usar este middleware, podemos registrarlo en el archivo start/kernel.js:

const namedMiddleware = {
log: 'App/Middleware/LogRequest',
};

Y luego aplicarlo a una ruta:

Route.get('/', ({ response }) => {
return response.send('Hola Mundo');
}).middleware(['log']);

3. Integración de Base de Datos

Adonis.js viene con un ORM (Mapeador de Relaciones de Objetos) incorporado llamado Lucid. Admite múltiples bases de datos como MySQL, PostgreSQL, SQLite y Oracle. Aquí tienes un ejemplo de cómo crear un modelo y hacer consultas a la base de datos:

class User extends Model {
static get table() {
return 'users';
}
}

const usuarios = await User.query().where('edad', '>', 18).fetch();

En este ejemplo, definimos un modelo User que representa la tabla users en la base de datos. Luego usamos el método query() para buscar todos los usuarios que sean mayores de 18 años.

4. Autenticación

Adonis.js proporciona un sistema de autenticación simple y seguro listo para usar. Incluye funciones como registro, inicio de sesión y restablecimiento de contraseña. Aquí tienes un ejemplo de cómo autenticar a un usuario:

const auth = await auth.attempt(correoElectronico, contraseña);

En este ejemplo, usamos el método attempt() para autenticar a un usuario con su correo electrónico y contraseña.

Ejemplos

Exploraremos un par de ejemplos para demostrar el poder y la flexibilidad de Adonis.js:

Ejemplo 1: Creación de una aplicación de lista de tareas (Todo List)

Crearemos una aplicación sencilla de lista de tareas utilizando Adonis.js. La aplicación permitirá a los usuarios crear, actualizar y eliminar tareas.

  1. Instala Adonis.js de forma global:
npm install -g @adonisjs/cli
  1. Crea un nuevo proyecto de Adonis.js:
adonis new todo-list
  1. Genera un modelo y una migración para la lista de tareas:
adonis make:model Todo -m
  1. Ejecuta la migración para crear la tabla todos:
adonis migration:run
  1. Define las rutas para crear, actualizar y eliminar tareas en start/routes.js:
Route.post('/todos', 'TodoController.create');
Route.put('/todos/:id', 'TodoController.update');
Route.delete('/todos/:id', 'TodoController.delete');
  1. Implementa los métodos en app/Controllers/Http/TodoController.js:
class TodoController {
async create({ request }) {
const { title } = request.body;
const todo = new Todo();
todo.title = title;
await todo.save();
return todo;
}

async update({ params, request }) {
const { title } = request.body;
const todo = await Todo.findOrFail(params.id);
todo.title = title;
await todo.save();
return todo;
}

async delete({ params }) {
const todo = await Todo.findOrFail(params.id);
await todo.delete();
return { message: 'Tarea eliminada exitosamente' };
}
}
  1. Inicia el servidor de desarrollo:
adonis serve --dev

Ahora puedes usar herramientas como Postman para probar los puntos finales de la API para crear, actualizar y eliminar tareas.

Ejemplo 2: Aplicación de chat en tiempo real

Adonis.js se integra perfectamente con protocolos WebSocket como WebSocket y Socket.io, lo que lo hace ideal para construir aplicaciones en tiempo real. Aquí tienes un ejemplo de una aplicación de chat en tiempo real:

  1. Instala el paquete de Adonis.js WebSockets:
npm install @adonisjs/websocket
  1. Crea un nuevo canal para la aplicación de chat:
adonis make:channel Chat
  1. Implementa la lógica para manejar los mensajes de chat en app/Channels/Chat.js:
class Chat {
onMessage({ socket, request }, message) {
socket.broadcastToAll('message', message);
}
}
  1. Registra el canal en start/socket.js:
const namedChannels = {
chat: 'App/Channels/Chat',
};
  1. Crea una ruta de WebSocket en start/routes.js:
Route.ws('/chat', 'ChatController.index').middleware(['auth']);
  1. Implementa los métodos en app/Controllers/Http/ChatController.js:
class ChatController {
async index({ auth, view }) {
await auth.check();
return view.render('chat');
}
}
  1. Crea una vista para la interfaz de chat en resources/views/chat.edge:
<!DOCTYPE html>
<html>
<head>
<title>Chat</title>
</head>
<body>
<input type="text" id="message" placeholder="Escribe tu mensaje">
<button id="send">Enviar</button>

<script src="/socket.io/socket.io.js"></script>
<script>
const socket = io();

document.getElementById('send').addEventListener('click', () => {
const message = document.getElementById('message').value;
socket.emit('message', message);
});

socket.on('message', (message) => {
console.log(`Mensaje recibido: ${message}`);
});
</script>
</body>
</html>
  1. Inicia el servidor de desarrollo:
adonis serve --dev

Ahora puedes abrir la interfaz de chat en un navegador web y comenzar a enviar mensajes en tiempo real.

Conclusión

En este tutorial, exploramos la introducción, historia, características y ejemplos de Adonis.js. Aprendimos sobre su sistema de enrutamiento poderoso, soporte de middleware, integración de bases de datos y sistema de autenticación. También vimos dos ejemplos de cómo construir una aplicación de lista de tareas y una aplicación de chat en tiempo real utilizando Adonis.js.

Para obtener más información sobre Adonis.js, puedes visitar el sitio web oficial.