Muy bien, eso fue todo sobre Adonis.js. Ahora podemos empezar a sumergirnos en algo de código. Así que vamos a jugar un escenario aquí en el que estamos tratando de construir una versión simplificada de Product Hunt para mostrar todos los increíbles proyectos de código abierto en internet, y vamos a llamarlo OS Hunt. Ahora, por supuesto, no vamos a construir toda la aplicación, pero cubriremos todos los puntos de contacto para ver qué se necesita para construir una aplicación como esta en Adonis.js.
Así que lo primero es lo primero, tenemos que crear un nuevo proyecto, y podemos hacerlo ejecutando este comando, npm init adonis y el nombre del proyecto. Y después de ejecutar este comando, obtendremos una nueva aplicación de Adonis.js, que viene con un ORM SQL, soporte para autenticación, carga de archivos, hash de contraseñas, básicamente todas las cosas que necesitamos para iniciar nuestro desarrollo. Además, así es como se ve la estructura de carpetas de una aplicación nueva de Adonis.js, donde todo tiene su propio lugar donde vive, y no tienes que averiguarlo por tu cuenta.
Bien, así que lo primero que queremos hacer justo después de crear nuestra aplicación es ver qué tan rápido podemos realizar las operaciones CRUD de nuestra aplicación. Y en nuestro caso, básicamente será crear, leer, actualizar y eliminar proyectos. Muy bien, todo comienza con el enrutamiento, donde las rutas son esencialmente los puntos de entrada HTTP de tu aplicación. Y así es como puedes definirlas. Así que en nuestro caso, necesitamos aproximadamente estos siete endpoints para gestionar nuestros proyectos. Primero, tendremos un endpoint para listar todos los proyectos. Y luego tenemos nuestros dos endpoints para mostrar el formulario para crear un nuevo proyecto y luego manejar el envío para básicamente guardar ese proyecto en la base de datos. Y luego queremos mostrar un proyecto por su slug, luego un par de endpoints más para gestionar la actualización de un proyecto, y finalmente un endpoint para eliminar el proyecto. Una vez que hayamos definido nuestras rutas, podemos crear un controlador para ello para que no tengamos que escribir toda la lógica en este archivo masivo de rutas.
Y podemos, esencialmente, organizar todo usando controladores. Y podemos crear un controlador usando este comando llamado node ace make controller, y luego el nombre del controlador que queremos crear. Y una vez que hayamos creado nuestro controlador, podemos volver a nuestro archivo de rutas y podemos reemplazar todos estos callbacks en línea con las referencias del controlador. Así que aquí estamos diciendo, queremos usar el controlador de proyectos para todos estos endpoints, pero queremos usar diferentes métodos para manejar diferentes rutas. Y así es como esencialmente se ve un controlador donde es una clase de JavaScript estándar con todos los métodos que queremos crear para manejar diferentes solicitudes HTTP. Ahora, antes de empezar a poner cualquier lógica dentro de nuestros controladores, necesitamos una forma de interactuar con nuestra base de datos para que podamos obtener proyectos de allí y también podamos guardar nuestros proyectos dentro de la base de datos.
Y aquí es donde nos moveremos a nuestra siguiente capa de MVC llamada modelos. Así que los modelos son básicamente una forma para que interactúes con la base de datos y las migraciones son una forma de crear y alterar tablas de la base de datos o como crear índices y eliminar índices y todo eso. Así que puedes crear un nuevo modelo junto con una migración usando este comando, que es node ace make model, el nombre del modelo y la bandera dash M para básicamente decir que también quieres una migración junto con el modelo. Una vez que tengas el archivo de migración, puedes esencialmente escribir las instrucciones que quieres para crear una nueva tabla. En nuestro caso, necesitamos una tabla con una clave primaria. Ese es el ID, el nombre del proyecto, su slug único, descripción del proyecto y la URL que alguien puede hacer clic e ir al sitio web del proyecto. Y así es como se ve un modelo, donde estaremos usando la migración para simplemente crear la tabla.
Comments