Table of Contents
Como desarrollador de front-end, me gustaría decir que el framework NestJs fue la mejor opción para empezar a tocar la parte de backend de las aplicaciones. Siempre preguntaba a mi tutor en Apiumhub sobre patrones de diseño, arquitectura limpia y microservicios. Entonces me mostró el enlace a la documentación de NestJs, totalmente completa y muy bien estructurada. Fue un buen descubrimiento para mí perderme en esta página y aprender sobre decoradores, proveedores, inyección de dependencias, pruebas, autenticación, y más temas de diferentes áreas.
¿Qué es NestJs?
En primer lugar, ¿qué es este NestJs? Es un marco de trabajo Node.js de código abierto para el desarrollo de sistemas backend desafiantes que utilizan la convención del paradigma de diseño sobre la configuración que elimina la necesidad de una configuración explícita permitiendo a los desarrolladores utilizar herramientas comunes y el código de una manera particular.
Puede crear aplicaciones escalables, comprobables y poco acopladas. Está significativamente influenciado por Angular y una característica importante es el poder de la inyección de dependencia, que permite inyectar un módulo en otro, promoviendo la reutilización del código.
¿Qué proporciona NestJs y cuáles son las ventajas de utilizarlo?
NestJs está creado tanto para Monolitos como para Microservicios. Puedes construir APIs Rest, aplicaciones MVC, aplicaciones GraphQL, Web Sockets, o CLIs, y trabajos CRON.
Como las aplicaciones Nest están escritas en TypeScript, la detección de errores en tiempo de compilación protege nuestro código y evita errores al escribir numerosos microservicios que tienen todos el mismo modo de respuesta.
NestJS permite crear microservicios excepcionales, bien organizados y ligeros. Debido a la estructura impuesta por NestJs, los desarrolladores deben escribir el controlador, el servicio y el repositorio en lugares específicos y de una manera concreta. Esto mejora el proceso de desarrollo, ya que evita errores que podrían dar lugar a tener que gastar mucho esfuerzo más tarde en la refactorización de la base de código y permite centrar más la atención en el diseño de los puntos finales en lugar de la estructura de la aplicación.
Dispone de una útil herramienta de interfaz de línea de comandos llamada NestCLI que facilita la generación del código de la caldera (Módulos, Middleware, Controlador, etc.) Además, las configuraciones de TypeScript, Prettier y Eslint están totalmente configuradas con NestJS.
Ofrece integración con Jest y Supertest, y mediante el sistema de inyección de dependencias, facilita la imitación de componentes en el entorno de pruebas.
La documentación de NestJs es una de las más completas y comprensibles, al escudriñar rápidamente la documentación, puedes encontrar la respuesta a tu error y reducir el tiempo de depuración.
Conceptos fundamentales de NestJs
Decoradores
Un decorador es una expresión que acepta tres argumentos: un objetivo, un nombre y un descriptor de propiedad, y devuelve una función. Se aplica insertando el decorator en la parte superior de lo que se intenta decorar, seguido del carácter @. Hay tres decoradores diferentes como clase ( @Controller() ), método( @Get() ), o argumento ( @Body() ).
En NestJs todo puede ser controlado con decoradores. Puedes conectar un controlador a una colección de rutas, especificar un método de petición, añadir contenido al cuerpo de la petición o analizar los parámetros de la misma. También puedes crear tus propios decoradores personalizados para utilizarlos dentro de tu proyecto. Como en el ejemplo de la documentación de NestJs:
Controladores
Los controladores manejan las solicitudes entrantes y devuelven las respuestas al cliente. Puedes especificar una URL como ruta principal para este controlador y un decorador de método como @Get, @Post, @Put o @Delete utilizando el decorador @Controller.
Proveedores
Los proveedores son un concepto esencial en NestJs. Las clases principales de Nest, como los servicios (manejan el acceso a los datos y la lógica de negocio), los repositorios (manejan el acceso a una base de datos), las fábricas, etc, pueden ser considerados como proveedores. Es posible construir nuevos proveedores e inyectarlos en los controladores o proveedores existentes. Por ejemplo, un proveedor de servicios se utilizará con el decorador @Injectable que añade metadatos y declara que este servicio puede ser gestionado por el contenedor Nest IoC. Nest IoC gestiona las interacciones entre los proveedores.
Del curso ‘NestJS: The Complete Developer’s’ GuideCourse de Stephen Grider
Módulos
Los módulos son las piezas fundamentales de las aplicaciones Nest. El AppModule se incluye automáticamente cuando se crea una aplicación Nest. Para organizar eficazmente sus componentes, se aconseja agrupar cada una de sus características en un módulo.
Por defecto, el módulo incluye proveedores. Por lo tanto, los proveedores que no forman parte directamente del módulo actual ni se exportan directamente desde los módulos importados no pueden ser inyectados.
Pipes
Hay dos usos comunes para los pipes: transformar los datos de entrada a la forma deseada y validarlos para lanzar una excepción si no son válidos.
Guardias
Los guardianes deciden si una solicitud específica será procesada por el manejador de rutas dependiendo de condiciones particulares en tiempo de ejecución. Ayudan a configurar fácilmente la lógica de autenticación y autorización.
Conclusión
En este artículo, recapitulamos algunas de las ideas clave de NestJs. Con NestJs puedes construir límites claros de dominio, escribir módulos reutilizables y escribir código poco acoplado y mantenible. Es increíble la cantidad de decoradores disponibles en este marco para realizar diversas funciones que requieren una codificación mínima o nula. Además, la inyección de dependencias hace que sea sencillo simular servicios, por ejemplo, en las pruebas de los controladores.
NestJs tiene una gran comunidad y una buena documentación para explorar en su sitio web. Además, he incluido el tutorial de NestJs en español de un colega que ilustra las ideas clave con ejemplos concretos y enumera herramientas y bibliotecas útiles para usar con NestJs.
Recursos
- Why I choose NestJS over other Node JS frameworks por S M Asad Rahman @Medium
- Why NestJS is The Best Node.js Framework for Microservices? por Mohammad Yaser Ahmadi @Medium
- NestJS and its Advantages for Backend Developers por Code everywhere @Medium
- NestJS Tutorial Español – Introducción al framework de NodeJS por Albert Hernandez @Youtube
Author
-
Graduated from Istanbul Technical University with a bachelor degree of computer engineering in June 2018. During her studies, she has been involved in projects in various areas including web development, computer vision and computer networks.
Ver todas las entradas