En las lecciones anteriores,
hemos aprendido acerca de Node.
También hemos visto cómo Node se puede utilizar para configurar un servidor Web.
Ahora los diseñadores de nodos mantuvieron intencionalmente el nodo pequeño con un pequeño número de
módulos de código para que puedan dejarlo a
los desarrolladores de terceros para llegar a soluciones innovadoras a los problemas.
Así que una vez que Node fue lanzado, varios desarrolladores de terceros comenzaron a diseñar
y lanzar interesantes módulos de terceros que pueden ejecutarse en la parte superior de la plataforma Node.
Ahora ha visto una serie de módulos de nodo que podrían ser
utilizados para el desarrollo front-end en los cursos anteriores.
Ahora en este curso estamos mirando el desarrollo del lado del servidor y en el lado del servidor,
uno de los módulos de nodos de terceros más populares o
frameworks para construir servidores HTTP es Express.
Veamos algunos detalles de Express en
esta conferencia y luego haremos uso de Express para
construir un servidor que sirva la API REST a lo largo del resto de este curso.
Primero, ¿qué es Express?
Express es un
marco rápido, no obstinado y minimalista que se ejecuta en la parte superior de Node.js y admite el desarrollo web.
Esta es la definición que tomé prestada de expressjs.com,
el sitio donde la documentación relacionada con Express está disponible para nosotros.
Ahora Express le permite desarrollar una aplicación Web,
aplicación del lado del servidor que servirá contenido para su consumo por parte de nuestro front-end.
Express ofrece un conjunto robusto de características que exploraremos con
más detalle a través del resto de las lecciones de este curso.
Expresarse como dije es un marco minimalista,
y Express también proporciona una forma de extender y agregar
funcionalidad a Express a través de middleware de terceros.
Esto amplía la funcionalidad de Express y añade más funciones según sea necesario.
Por lo tanto, puede crear su servidor Web utilizando tantos middleware de terceros como
sea necesario para satisfacer las necesidades del servidor Web que está diseñando.
Vamos a ver algunos ejemplos de middleware de terceros en esta lección y
también vamos a explorar más de estos a medida que vamos a través del resto de las lecciones de este curso.
Para usar Express en su proyecto, por supuesto,
el primer paso es instalar Express y dado que Express es un módulo Node,
lo instalamos diciendo npm install express —save
y esto instalaría Express en su proyecto local.
Veremos el uso de esto en el ejercicio que sigue a esta conferencia.
Hablemos brevemente sobre el middleware Express.
Entonces, ¿cuál es exactamente el propósito del middleware?
El middleware que admite Express proporciona una gran cantidad de
funcionalidades de plug-in que se utilizarían
para mejorar su aplicación Express, funcionalidad de plug-in como, por ejemplo, vamos
a ver un middleware llamado Morgan que le permite
imprimir información de registro en la pantalla sobre solicitudes que entran en su servidor.
Del mismo modo, veremos otro middleware llamado BodyParser,
que le permite analizar el cuerpo del
mensaje de solicitud HTTP entrante y
extraer información de él para su uso dentro de su aplicación Express.
Veremos el uso de estos en el ejercicio que sigue.
Como mencioné, Morgan registra información en la consola en el lado del servidor,
información sobre las solicitudes entrantes.
Del mismo modo, pueden servir recursos Web estáticos de nuestro servidor usando la
estática Express, por lo que esto servirá información de una carpeta dentro de nuestro proyecto Express,
y al declarar el proyecto puede decir que soy
doble nombre de archivo de subrayado y doble nombre de directorio de subrayado o dirname que
le da la ruta completa para el archivo o el directorio para
el módulo actual y me verá usando eso en el ejercicio.
Ahora que hemos entendido un poco acerca de
Express y el middleware que Express usa,
veamos un módulo de Node
porque esta es la primera vez que nos encontramos con módulos de Node de terceros,
veremos algunos detalles sobre los módulos de Node de terceros, así que si examinamos el
package.json para ver lo que está contenido en el archivo package.json,
también veremos el versionado semántico.
Por lo tanto, cuando se especifica la versión del paquete que se utiliza,
siempre se especifica la versión Major Version.Menor.
Así que cuando instala un paquete,
siempre se identifica por estos tres números,
versión principal que podría introducir cambios rotos, lo que significa que si está
instalando una versión más reciente del paquete puede no ser
completamente compatible con versiones anteriores.
Puede introducir cambios de ruptura por los que es posible que tenga que volver atrás y corregir
el código que podría haber escrito en la versión anterior de su proyecto.
La versión secundaria introduce
algunos cambios menores en su paquete y puede que no esté rompiendo los cambios.
Un parche sería una corrección de errores que a menudo se emite y luego se descubre un pequeño error. Por lo
tanto, los parches generalmente no provocan cambios de ruptura, por lo que puede usar fácilmente
una versión superior o una versión de parche superior de
un paquete en particular que esté utilizando dentro de su aplicación Node.
Cuando está instalando un paquete, puede especificar
la versión exacta del paquete a instalar diciendo npm install,
por ejemplo, si desea instalar la
versión 4.0.0 de Express puede decir express @4 .0.0.
Por lo tanto, está especificando explícitamente qué versión del paquete instalar.
Si está de acuerdo con una versión de parche de nivel superior,
diría npm install express@"~4.0.0 Si
una versión menor superior de un paquete es
aceptable, entonces diría @ y el nombre del paquete.
Ahora este tipo de información también se guarda en el archivo package.json,
vamos a visitar rápidamente el paquete del archivo json
donde notará que parte de esta información se está guardando.
Ahora, cuando haga el ejercicio que sigue a esta conferencia,
verá esto en el archivo package.json.
Este será el resultado de completar el ejercicio que sigue a esta conferencia.
En el ejercicio vamos a construir un servidor Web simple usando Express.
Ahora déjame llevarte a través de un recorrido rápido por package.json
para ilustrar algo de información en package.json.
Entonces, en el archivo package.json notará esta información aquí,
esta propiedad para nuestro json que se almacena aquí llamado Dependencias.
Las dependencias es donde especificará qué
módulos adicionales de terceros de los
que depende este proyecto de Node en particular,
por lo que, como puede ver aquí, estamos diciendo que este proyecto depende de Express
y Morgan y observe en particular cómo se especifica esta información aquí.
Entonces esto es ^4.16.3, lo que significa que esto
funcionará con cualquier versión que sea 4.16.3 o superior.
Puede usar una versión menor de nivel superior y este proyecto seguirá estando de
acuerdo con ella y de manera similar para Morgan hemos especificado la información aquí.
Así que esta información adicional se agrega al archivo package.json cada vez que hace
npm install y diga —save flag for the npm install.
Ahora, también notará que he creado un archivo.gitignore aquí y dentro del
archivo.gitignore he especificado que git debe ignorar la carpeta de módulos de nodo.
Entonces, ¿qué está contenido exactamente en la carpeta de módulos de nodo?
Si instala módulos de terceros en su aplicación Node,
todos estos módulos de terceros se guardarán en la carpeta Node modules aquí,
por lo que dentro de su proyecto verá que la carpeta Node modules se ha creado aquí.
Y echando un vistazo a la carpeta de módulos de nodo, verá
un montón de paquetes que se han instalado.
Ahora todos estos han sido instalados porque usted
instala Express y Express a su vez depende de
algunos otros paquetes que son necesarios para que todos los que también se instalen aquí de forma predeterminada.
En particular, permítanme también llamar su atención sobre el paquete Express aquí,
por lo que si entra en el paquete Express verá
información adicional almacenada en el paquete Express,
por lo que la perspectiva de índice también dado que Express en sí es
un módulo de nodo, verá un
archivo package.json dentro de Express también que contiene
información adicional que por supuesto es muy detallada allí,
difícil para nosotros de entender, pero tenga en cuenta en particular
que Express en sí depende de muchos otros módulos Node aquí.
Y esa es la razón por la que todos estos otros módulos de nodo
también se han instalado en la carpeta de módulos de nodo.
Por lo tanto, cuando instale Express,
esto también activará inmediatamente todas sus dependencias también para ser instaladas porque
Express requerirá estos otros módulos de Node para que haga su trabajo.
Además, dentro de Express también verá el archivo index.js.
Así que este es el punto de partida para nuestro módulo Express Node en sí y
tenga en cuenta en particular que el archivo index.js simplemente dice module.exports requieren lib express.
Entonces, el código real para el módulo Express en sí está dentro de este proyecto
lib, carpeta lib aquí y puede ver el detalle.
Así que si usted tiene curiosidad por ver los detalles de Express
en sí puede ir y mirar allí, pero de nuevo esto puede ser un poco demasiado para usted en este momento.
Por el momento sólo acepta el hecho de que Express hará su trabajo como se esperaba.
Pero pensé que sería una experiencia interesante visitar la carpeta del módulo Node
para mirar una estructura de un módulo de nodo de terceros en particular con un poco más de detalle.
Además, notará que hay otro archivo
aquí llamado package-lock.json que está instalado.
Ahora esto está siendo instalado por las versiones más recientes de npm.
El archivo package-lock.json es generado automáticamente por
npm que almacena información sobre
el árbol exacto que se generó al instalar
otros módulos de Node y esto es muy útil cuando
necesita hacer la instalación de los módulos Node en otra ubicación.
Así que, por ejemplo, si descarga un repositorio de Git e
intenta recrear este proyecto en otra computadora,
simplemente escribiría npm install en el símbolo del sistema y
eso le pedirá a su aplicación Node que
instale automáticamente todo lo que se especifica en las dependencias aquí para usted.
Al crear que package-lock.json almacena información adicional que es utilizada por
npm para hacer la instalación correcta de todos los módulos npm que son necesarios.
Ahora, por el momento, no necesita preocuparse por los detalles de
lo que hay dentro del archivo package-lock.json.
Con esto, completamos esta lección donde hemos examinado algunos detalles sobre Express.