1
00:00:03,650 --> 00:00:06,464
En las lecciones anteriores,

2
00:00:06,464 --> 00:00:08,580
hemos aprendido acerca de Node.

3
00:00:08,580 --> 00:00:13,215
También hemos visto cómo Node se puede utilizar para configurar un servidor Web.

4
00:00:13,215 --> 00:00:20,460
Ahora los diseñadores de nodos mantuvieron intencionalmente el nodo pequeño con un pequeño número de

5
00:00:20,460 --> 00:00:24,480
módulos de código para que puedan dejarlo a

6
00:00:24,480 --> 00:00:29,730
los desarrolladores de terceros para llegar a soluciones innovadoras a los problemas.

7
00:00:29,730 --> 00:00:37,590
Así que una vez que Node fue lanzado, varios desarrolladores de terceros comenzaron a diseñar

8
00:00:37,590 --> 00:00:45,875
y lanzar interesantes módulos de terceros que pueden ejecutarse en la parte superior de la plataforma Node.

9
00:00:45,875 --> 00:00:50,030
Ahora ha visto una serie de módulos de nodo que podrían ser

10
00:00:50,030 --> 00:00:54,185
utilizados para el desarrollo front-end en los cursos anteriores.

11
00:00:54,185 --> 00:00:59,240
Ahora en este curso estamos mirando el desarrollo del lado del servidor y en el lado del servidor,

12
00:00:59,240 --> 00:01:03,020
uno de los módulos de nodos de terceros más populares o

13
00:01:03,020 --> 00:01:08,720
frameworks para construir servidores HTTP es Express.

14
00:01:08,720 --> 00:01:11,480
Veamos algunos detalles de Express en

15
00:01:11,480 --> 00:01:14,345
esta conferencia y luego haremos uso de Express para

16
00:01:14,345 --> 00:01:21,725
construir un servidor que sirva la API REST a lo largo del resto de este curso.

17
00:01:21,725 --> 00:01:25,670
Primero, ¿qué es Express?

18
00:01:25,670 --> 00:01:30,355
Express es un

19
00:01:30,355 --> 00:01:37,519
marco rápido, no obstinado y minimalista que se ejecuta en la parte superior de Node.js y admite el desarrollo web.

20
00:01:37,519 --> 00:01:42,570
Esta es la definición que tomé prestada de expressjs.com,

21
00:01:42,570 --> 00:01:48,025
el sitio donde la documentación relacionada con Express está disponible para nosotros.

22
00:01:48,025 --> 00:01:53,769
Ahora Express le permite desarrollar una aplicación Web,

23
00:01:53,769 --> 00:02:02,385
aplicación del lado del servidor que servirá contenido para su consumo por parte de nuestro front-end.

24
00:02:02,385 --> 00:02:07,730
Express ofrece un conjunto robusto de características que exploraremos con

25
00:02:07,730 --> 00:02:13,610
más detalle a través del resto de las lecciones de este curso.

26
00:02:13,610 --> 00:02:17,425
Expresarse como dije es un marco minimalista,

27
00:02:17,425 --> 00:02:21,020
y Express también proporciona una forma de extender y agregar

28
00:02:21,020 --> 00:02:25,465
funcionalidad a Express a través de middleware de terceros.

29
00:02:25,465 --> 00:02:31,830
Esto amplía la funcionalidad de Express y añade más funciones según sea necesario.

30
00:02:31,830 --> 00:02:38,750
Por lo tanto, puede crear su servidor Web utilizando tantos middleware de terceros como

31
00:02:38,750 --> 00:02:46,070
sea necesario para satisfacer las necesidades del servidor Web que está diseñando.

32
00:02:46,070 --> 00:02:52,130
Vamos a ver algunos ejemplos de middleware de terceros en esta lección y

33
00:02:52,130 --> 00:02:58,170
también vamos a explorar más de estos a medida que vamos a través del resto de las lecciones de este curso.

34
00:02:58,170 --> 00:03:01,520
Para usar Express en su proyecto, por supuesto,

35
00:03:01,520 --> 00:03:05,730
el primer paso es instalar Express y dado que Express es un módulo Node,

36
00:03:05,730 --> 00:03:10,940
lo instalamos diciendo npm install express —save

37
00:03:10,940 --> 00:03:17,145
y esto instalaría Express en su proyecto local.

38
00:03:17,145 --> 00:03:21,865
Veremos el uso de esto en el ejercicio que sigue a esta conferencia.

39
00:03:21,865 --> 00:03:25,670
Hablemos brevemente sobre el middleware Express.

40
00:03:25,670 --> 00:03:28,425
Entonces, ¿cuál es exactamente el propósito del middleware?

41
00:03:28,425 --> 00:03:32,510
El middleware que admite Express proporciona una gran cantidad de

42
00:03:32,510 --> 00:03:38,370
funcionalidades de plug-in que se utilizarían

43
00:03:38,370 --> 00:03:41,165
para mejorar su aplicación Express, funcionalidad de plug-in como, por ejemplo, vamos

44
00:03:41,165 --> 00:03:45,500
a ver un middleware llamado Morgan que le permite

45
00:03:45,500 --> 00:03:52,490
imprimir información de registro en la pantalla sobre solicitudes que entran en su servidor.

46
00:03:52,490 --> 00:03:56,494
Del mismo modo, veremos otro middleware llamado BodyParser,

47
00:03:56,494 --> 00:03:59,090
que le permite analizar el cuerpo del

48
00:03:59,090 --> 00:04:02,375
mensaje de solicitud HTTP entrante y

49
00:04:02,375 --> 00:04:06,450
extraer información de él para su uso dentro de su aplicación Express.

50
00:04:06,450 --> 00:04:11,395
Veremos el uso de estos en el ejercicio que sigue.

51
00:04:11,395 --> 00:04:18,455
Como mencioné, Morgan registra información en la consola en el lado del servidor,

52
00:04:18,455 --> 00:04:21,645
información sobre las solicitudes entrantes.

53
00:04:21,645 --> 00:04:28,145
Del mismo modo, pueden servir recursos Web estáticos de nuestro servidor usando la

54
00:04:28,145 --> 00:04:35,855
estática Express, por lo que esto servirá información de una carpeta dentro de nuestro proyecto Express,

55
00:04:35,855 --> 00:04:39,785
y al declarar el proyecto puede decir que soy

56
00:04:39,785 --> 00:04:44,690
doble nombre de archivo de subrayado y doble nombre de directorio de subrayado o dirname que

57
00:04:44,690 --> 00:04:48,410
le da la ruta completa para el archivo o el directorio para

58
00:04:48,410 --> 00:04:53,535
el módulo actual y me verá usando eso en el ejercicio.

59
00:04:53,535 --> 00:04:55,640
Ahora que hemos entendido un poco acerca de

60
00:04:55,640 --> 00:04:58,695
Express y el middleware que Express usa,

61
00:04:58,695 --> 00:05:02,930
veamos un módulo de Node

62
00:05:02,930 --> 00:05:06,499
porque esta es la primera vez que nos encontramos con módulos de Node de terceros,

63
00:05:06,499 --> 00:05:10,460
veremos algunos detalles sobre los módulos de Node de terceros, así que si examinamos el

64
00:05:10,460 --> 00:05:15,000
package.json para ver lo que está contenido en el archivo package.json,

65
00:05:15,000 --> 00:05:17,920
también veremos el versionado semántico.

66
00:05:17,920 --> 00:05:22,550
Por lo tanto, cuando se especifica la versión del paquete que se utiliza,

67
00:05:22,550 --> 00:05:31,745
siempre se especifica la versión Major Version.Menor.

68
00:05:31,745 --> 00:05:35,685
Así que cuando instala un paquete,

69
00:05:35,685 --> 00:05:39,230
siempre se identifica por estos tres números,

70
00:05:39,230 --> 00:05:45,440
versión principal que podría introducir cambios rotos, lo que significa que si está

71
00:05:45,440 --> 00:05:48,560
instalando una versión más reciente del paquete puede no ser

72
00:05:48,560 --> 00:05:51,920
completamente compatible con versiones anteriores.

73
00:05:51,920 --> 00:05:55,370
Puede introducir cambios de ruptura por los que es posible que tenga que volver atrás y corregir

74
00:05:55,370 --> 00:05:59,905
el código que podría haber escrito en la versión anterior de su proyecto.

75
00:05:59,905 --> 00:06:01,790
La versión secundaria introduce

76
00:06:01,790 --> 00:06:06,385
algunos cambios menores en su paquete y puede que no esté rompiendo los cambios.

77
00:06:06,385 --> 00:06:14,800
Un parche sería una corrección de errores que a menudo se emite y luego se descubre un pequeño error. Por lo

78
00:06:14,800 --> 00:06:21,005
tanto, los parches generalmente no provocan cambios de ruptura, por lo que puede usar fácilmente

79
00:06:21,005 --> 00:06:24,395
una versión superior o una versión de parche superior de

80
00:06:24,395 --> 00:06:30,215
un paquete en particular que esté utilizando dentro de su aplicación Node.

81
00:06:30,215 --> 00:06:33,410
Cuando está instalando un paquete, puede especificar

82
00:06:33,410 --> 00:06:38,465
la versión exacta del paquete a instalar diciendo npm install,

83
00:06:38,465 --> 00:06:40,460
por ejemplo, si desea instalar la

84
00:06:40,460 --> 00:06:44,630
versión 4.0.0 de Express puede decir express @4 .0.0.

85
00:06:44,630 --> 00:06:51,635
Por lo tanto, está especificando explícitamente qué versión del paquete instalar.

86
00:06:51,635 --> 00:06:55,630
Si está de acuerdo con una versión de parche de nivel superior,

87
00:06:55,630 --> 00:07:02,590
diría npm install express@"~4.0.0 Si

88
00:07:02,590 --> 00:07:07,190
una versión menor superior de un paquete es

89
00:07:07,190 --> 00:07:13,125
aceptable, entonces diría @ y el nombre del paquete.

90
00:07:13,125 --> 00:07:17,210
Ahora este tipo de información también se guarda en el archivo package.json,

91
00:07:17,210 --> 00:07:20,070
vamos a visitar rápidamente el paquete del archivo json

92
00:07:20,070 --> 00:07:23,750
donde notará que parte de esta información se está guardando.

93
00:07:23,750 --> 00:07:27,575
Ahora, cuando haga el ejercicio que sigue a esta conferencia,

94
00:07:27,575 --> 00:07:31,845
verá esto en el archivo package.json.

95
00:07:31,845 --> 00:07:38,325
Este será el resultado de completar el ejercicio que sigue a esta conferencia.

96
00:07:38,325 --> 00:07:43,230
En el ejercicio vamos a construir un servidor Web simple usando Express.

97
00:07:43,230 --> 00:07:46,570
Ahora déjame llevarte a través de un recorrido rápido por package.json

98
00:07:46,570 --> 00:07:50,470
para ilustrar algo de información en package.json.

99
00:07:50,470 --> 00:07:56,530
Entonces, en el archivo package.json notará esta información aquí,

100
00:07:56,530 --> 00:08:00,525
esta propiedad para nuestro json que se almacena aquí llamado Dependencias.

101
00:08:00,525 --> 00:08:04,250
Las dependencias es donde especificará qué

102
00:08:04,250 --> 00:08:07,400
módulos adicionales de terceros de los

103
00:08:07,400 --> 00:08:10,700
que depende este proyecto de Node en particular,

104
00:08:10,700 --> 00:08:15,230
por lo que, como puede ver aquí, estamos diciendo que este proyecto depende de Express

105
00:08:15,230 --> 00:08:20,540
y Morgan y observe en particular cómo se especifica esta información aquí.

106
00:08:20,540 --> 00:08:25,715
Entonces esto es ^4.16.3, lo que significa que esto

107
00:08:25,715 --> 00:08:31,380
funcionará con cualquier versión que sea 4.16.3 o superior.

108
00:08:31,380 --> 00:08:35,725
Puede usar una versión menor de nivel superior y este proyecto seguirá estando de

109
00:08:35,725 --> 00:08:40,970
acuerdo con ella y de manera similar para Morgan hemos especificado la información aquí.

110
00:08:40,970 --> 00:08:47,345
Así que esta información adicional se agrega al archivo package.json cada vez que hace

111
00:08:47,345 --> 00:08:55,035
npm install y diga —save flag for the npm install.

112
00:08:55,035 --> 00:09:02,040
Ahora, también notará que he creado un archivo.gitignore aquí y dentro del

113
00:09:02,040 --> 00:09:09,770
archivo.gitignore he especificado que git debe ignorar la carpeta de módulos de nodo.

114
00:09:09,770 --> 00:09:13,275
Entonces, ¿qué está contenido exactamente en la carpeta de módulos de nodo?

115
00:09:13,275 --> 00:09:20,704
Si instala módulos de terceros en su aplicación Node,

116
00:09:20,704 --> 00:09:26,270
todos estos módulos de terceros se guardarán en la carpeta Node modules aquí,

117
00:09:26,270 --> 00:09:31,420
por lo que dentro de su proyecto verá que la carpeta Node modules se ha creado aquí.

118
00:09:31,420 --> 00:09:34,550
Y echando un vistazo a la carpeta de módulos de nodo, verá

119
00:09:34,550 --> 00:09:38,495
un montón de paquetes que se han instalado.

120
00:09:38,495 --> 00:09:40,490
Ahora todos estos han sido instalados porque usted

121
00:09:40,490 --> 00:09:43,250
instala Express y Express a su vez depende de

122
00:09:43,250 --> 00:09:50,550
algunos otros paquetes que son necesarios para que todos los que también se instalen aquí de forma predeterminada.

123
00:09:50,550 --> 00:09:55,850
En particular, permítanme también llamar su atención sobre el paquete Express aquí,

124
00:09:55,850 --> 00:09:59,045
por lo que si entra en el paquete Express verá

125
00:09:59,045 --> 00:10:02,470
información adicional almacenada en el paquete Express,

126
00:10:02,470 --> 00:10:06,435
por lo que la perspectiva de índice también dado que Express en sí es

127
00:10:06,435 --> 00:10:10,924
un módulo de nodo, verá un

128
00:10:10,924 --> 00:10:14,015
archivo package.json dentro de Express también que contiene

129
00:10:14,015 --> 00:10:19,865
información adicional que por supuesto es muy detallada allí,

130
00:10:19,865 --> 00:10:25,280
difícil para nosotros de entender, pero tenga en cuenta en particular

131
00:10:25,280 --> 00:10:31,330
que Express en sí depende de muchos otros módulos Node aquí.

132
00:10:31,330 --> 00:10:34,820
Y esa es la razón por la que todos estos otros módulos de nodo

133
00:10:34,820 --> 00:10:38,250
también se han instalado en la carpeta de módulos de nodo.

134
00:10:38,250 --> 00:10:40,160
Por lo tanto, cuando instale Express,

135
00:10:40,160 --> 00:10:45,020
esto también activará inmediatamente todas sus dependencias también para ser instaladas porque

136
00:10:45,020 --> 00:10:50,980
Express requerirá estos otros módulos de Node para que haga su trabajo.

137
00:10:50,980 --> 00:10:54,590
Además, dentro de Express también verá el archivo index.js.

138
00:10:54,590 --> 00:11:00,125
Así que este es el punto de partida para nuestro módulo Express Node en sí y

139
00:11:00,125 --> 00:11:05,690
tenga en cuenta en particular que el archivo index.js simplemente dice module.exports requieren lib express.

140
00:11:05,690 --> 00:11:12,645
Entonces, el código real para el módulo Express en sí está dentro de este proyecto

141
00:11:12,645 --> 00:11:16,225
lib, carpeta lib aquí y puede ver el detalle.

142
00:11:16,225 --> 00:11:20,900
Así que si usted tiene curiosidad por ver los detalles de Express

143
00:11:20,900 --> 00:11:25,560
en sí puede ir y mirar allí, pero de nuevo esto puede ser un poco demasiado para usted en este momento.

144
00:11:25,560 --> 00:11:31,815
Por el momento sólo acepta el hecho de que Express hará su trabajo como se esperaba.

145
00:11:31,815 --> 00:11:38,450
Pero pensé que sería una experiencia interesante visitar la carpeta del módulo Node

146
00:11:38,450 --> 00:11:45,435
para mirar una estructura de un módulo de nodo de terceros en particular con un poco más de detalle.

147
00:11:45,435 --> 00:11:48,530
Además, notará que hay otro archivo

148
00:11:48,530 --> 00:11:52,010
aquí llamado package-lock.json que está instalado.

149
00:11:52,010 --> 00:11:56,690
Ahora esto está siendo instalado por las versiones más recientes de npm.

150
00:11:56,690 --> 00:12:01,190
El archivo package-lock.json es generado automáticamente por

151
00:12:01,190 --> 00:12:06,259
npm que almacena información sobre

152
00:12:06,259 --> 00:12:10,265
el árbol exacto que se generó al instalar

153
00:12:10,265 --> 00:12:14,630
otros módulos de Node y esto es muy útil cuando

154
00:12:14,630 --> 00:12:22,660
necesita hacer la instalación de los módulos Node en otra ubicación.

155
00:12:22,660 --> 00:12:27,620
Así que, por ejemplo, si descarga un repositorio de Git e

156
00:12:27,620 --> 00:12:32,865
intenta recrear este proyecto en otra computadora,

157
00:12:32,865 --> 00:12:35,930
simplemente escribiría npm install en el símbolo del sistema y

158
00:12:35,930 --> 00:12:39,050
eso le pedirá a su aplicación Node que

159
00:12:39,050 --> 00:12:45,810
instale automáticamente todo lo que se especifica en las dependencias aquí para usted.

160
00:12:45,810 --> 00:12:53,335
Al crear que package-lock.json almacena información adicional que es utilizada por

161
00:12:53,335 --> 00:13:01,805
npm para hacer la instalación correcta de todos los módulos npm que son necesarios.

162
00:13:01,805 --> 00:13:05,090
Ahora, por el momento, no necesita preocuparse por los detalles de

163
00:13:05,090 --> 00:13:08,290
lo que hay dentro del archivo package-lock.json.

164
00:13:08,290 --> 00:13:15,550
Con esto, completamos esta lección donde hemos examinado algunos detalles sobre Express.