Mi primera aplicación con Express.js II. La estructura


En el artículo anterior te expliqué cómo crear una aplicación de Node.js utilizando uno de los frameworks más populares para trabajar con esta tecnología, me refiero a Express.js.

El final del artículo resultó en la aplicación ejecutándose en el navegador, en esta ocasión te explicaré cada uno de los archivos y directorios que crea este framework, con el objetivo de que seas capaz de comprender el funcionamiento del mismo.

Estructura de una aplicación Express

Al crear la aplicación pudiste ver que Express.js crea una estructura de ficheros tal y como se muestra en la imagen siguiente:

Estructura de ficheros que crea Express.js

Fig.1: Estructura de ficheros que crea Express.js

Como puedes observar se crea una carpeta public que es la que almacenará los assets (archivos de estilo, los archivos JavaScript, las imágenes y todos los recursos que necesitemos), permitiendo que estén accesibles para la aplicación. A la hora de crear una ruta, por ejemplo para cargar una imagen, no es necesario escribir public/images/imagen.jpg, pues es suficiente con images/imagen.jpg ya que el framework sabe que tiene que buscar tales assets en la carpeta public.

Se crea además una carpeta routes que es la encargada de almacenar los controladores de la aplicación, y una carpeta views que almacenará las vistas. En otros artículos profundizaré en las vistas y los controladores.

Existe además un archivo package.json que contiene información relativa a la aplicación, como su nombre, la versión en que se encuentra y las dependencias necesarias para su ejecución, entre otros datos. Es posible que el usuario adicione tanta información como considere oportuna.

Este archivo es importante ya que le permite al NPM (Node Package Manager, término en inglés de Gestor de Paquetes de Node) saber qué aplicaciones debe descargar para hacer funcionar la aplicación, además le facilita los datos necesarios para publicarla. En la siguiente figura te muestro el contenido por defecto del archivo:

Contenido del fichero package.json que crea Express.js

Fig.2. Contenido del fichero package.json que crea Express.js

Por último, pero no menos importante está el archivo app.js, en él se implementa el servidor web que ejecutará la aplicación, además se configuran las rutas y se asignan los controladores que se encargarán de cada una de ellas. Debajo les muestro el contenido de este archivo:

Contenido del fichero app.js que crea Express.js

Fig.3. Contenido del fichero app.js que crea Express.js

Como puedes observar, lo primero que se hace es importar, con la palabra reservada require, similar al include de C++ o al import de Python, los módulos necesarios para la aplicación, ellos son express, el módulo routes (en este caso no se especifica el nombre del archivo por lo que se busca un index.js) y el módulo user (este es otro caso particular, no se especifica la extensión del archivo ya que Node busca automáticamente un .js), se importan además los módulos http y path, necesarios en la construcción del servidor web.

Luego se crea la aplicación con la línea var app=express(), y posteriormente se configura el puerto de escucha, se especifican tanto el directorio donde van a guardarse las vistas como el motor de plantillas que se utilizará en la confección de estas, que puede ser jade, ejs, entre otras.

En próximos artículos profundizaré en las vistas, es por ello que no me detengo a explicarlas al detalle. Después de esto se especifican los middlewares (procesos que ocurren desde que sale una solicitud en el lado del cliente hasta que llega a nuestro servidor) que se van a usar y se define el directorio que almacenará los archivos estáticos. Luego se definen las rutas válidas en las líneas:

app.get("/", routes.index);
app.get("/users", user.list);

En este caso se define que para la ruta raíz se llamará a la función index del controlador index.js y para la ruta del tipo http://host:port/users se llamará a la función list del controlador user.js. Próximamente explicaré a profundidad el sistema de rutas y las facilidades que brinda Express.js en este sentido, por eso no las explico a fondo. Por último, al final del archivo se crea el servidor web haciendo uso del módulo http y se ejecuta escuchando por el puerto definido por ti en las configuraciones.

Conclusiones

En el presente artículo te mostré detenidamente la función de cada carpeta y archivo que forman parte de la estructura creada por el framework Express.js, con lo cual seguro avanzaste en su comprensión, importante para poder desarrollar aplicaciones utilizando esta herramienta.

Se hizo un análisis exhaustivo del archivo app.js, debido a que este es el que crea y configura nuestra aplicación así como nuestro servidor web, por lo cual tiene una importancia marcada y es necesario entenderlo a la perfección para poder comprender como funciona este framework.

En el próximo artículo estaré explicando a profundidad las rutas y los controladores. Espero te haya resultado útil e interesante el artículo de hoy. Happy Coding!!!