Saltar a contenido

Estructura y Buenas pr谩cticas - Nodejs

Estructura y funcionamiento

En los proyectos Nodejs no existe nada estandarizado y oficial que hable sobre estructura de proyectos y nomenclatura de Nodejs. Tan solo existen algunas sugerencias y buenas pr谩cticas a la hora de desarrollar que te recomiendo que utilices en la medida de lo posible.

Tip

Piensa que el c贸digo fuente que escribes hoy, es como un libro que se leer谩 durante a帽os. Alguien tendr谩 que coger tu c贸digo y leerlo en unos meses o a帽os para hacer alguna modificaci贸n y, como buenos desarrolladores que somos, tenemos la obligaci贸n de facilitarle en todo lo posible la comprensi贸n de ese c贸digo fuente. Quiz谩 esa persona futura podr铆as ser tu en unos meses y quedar铆a muy mal que no entendieras ni tu propio c贸digo 馃槅

Estructura en capas

Todos los proyectos para crear una Rest API con node y express est谩n divididos en capas. Como m铆nimo estar谩 la capa de rutas, controlador y modelo. En nuestro caso vamos a a帽adir una capa mas de servicios para quitarle trabajo al controlador y desacoplarlo de la capa de datos. As铆 si en el futuro queremos cambiar nuestra base de datos no romperemos tanto 馃槉

Rutas

En nuestro proyecto una ruta ser谩 una secci贸n de c贸digo express que asociar谩 un verbo http, una ruta o patr贸n de url y una funci贸n perteneciente al controlador para manejar esa petici贸n.

Controladores

En nuestros controladores tendremos los m茅todos que obtendr谩n las solicitudes de las rutas, se comunicar谩n con la capa de servicio y convertir谩n estas solicitudes en respuestas http.

Servicio

Nuestra capa de servicio incluir谩 toda la l贸gica de negocio de nuestra aplicaci贸n. Para realizar sus operaciones puede realizar llamadas tanto a otras clases dentro de esta capa, como a clases de la capa inferior.

Modelo

Como su nombre indica esta capa representa los modelos de datos de nuestra aplicaci贸n. En nuestro caso, al usar un ODM, solo tendremos modelos de datos definidos seg煤n sus requisitos.

Buenas pr谩cticas

Accesos entre capas

En base a la divisi贸n por capas que hemos comentado arriba, y el resto de entidades implicadas, hay una serie de reglas important铆simas que debes seguir muy de cerca:

  • Un Controlador

    • NO debe contener l贸gica en su clase. Solo est谩 permitido que ejecute l贸gica a trav茅s de una llamada al objeto de la capa L贸gica.
    • NO puede ejecutar directamente operaciones de la capa Acceso a Datos, siempre debe pasar por la capa de servicios.
    • Debemos seguir una coherencia entre todas las URL de las operaciones. Por ejemplo, si elegimos save para guardar, usemos esa palabra en todas las operaciones que sean de ese tipo. Evitad utilizar diferentes palabras save, guardar, persistir, actualizar para la misma acci贸n.
  • Un Servicio

    • NO puede llamar a objetos de la capa Controlador.
    • NO debe llamar a Acceso a Datos que NO sean de su 谩mbito / competencia.
    • Si es necesario puede llamar a otros Servicios para recuperar cierta informaci贸n que no sea de su 谩mbito / competencia.
    • Es un buen lugar para implementar la l贸gica de negocio.

Usar linters Prettier & ESLint (Se recomienda encarecidamente)

Un linter es una herramienta que nos ayuda a seguir las buenas pr谩cticas o gu铆as de estilo de nuestro c贸digo fuente. En este caso, para JavaScript, proveeremos de unos muy famosos. Una de las m谩s famosas es la combinaci贸n de Angular app to ESLint with Prettier, AirBnB Styleguide Recordar que a帽adir este tipo de configuraci贸n es opcional, pero necesaria para tener un buen c贸digo de calidad.