1
00:00:00,000 --> 00:00:04,740
[MÚSICA]

2
00:00:04,740 --> 00:00:09,065
En esta lección, aprenderemos cómo podemos escribir notificaciones simples.

3
00:00:09,065 --> 00:00:11,454
También aprenderemos acerca de los módulos de

4
00:00:11,454 --> 00:00:16,885
nodo y cómo los módulos de nodo nos permiten organizar nuestras aplicaciones en varios archivos.

5
00:00:16,885 --> 00:00:20,550
También aprenderemos sobre los diferentes tipos de módulos Node y

6
00:00:20,550 --> 00:00:26,450
cómo podemos importar módulos Node en nuestros archivos de nuestra aplicación Node y

7
00:00:26,450 --> 00:00:29,260
hacer uso de ellos dentro de nuestra aplicación.

8
00:00:29,260 --> 00:00:34,640
Primero, vamos a aprender acerca de los módulos de Node con un poco más de detalle en esta conferencia.

9
00:00:36,720 --> 00:00:39,320
JavaScript, cuando se

10
00:00:39,320 --> 00:00:43,900
diseñó por primera vez estaba destinado a ser un lenguaje de scripting para ser utilizado dentro del navegador.

11
00:00:43,900 --> 00:00:49,510
Así que el pequeño reino dentro del cual se suponía que debía ser utilizado es el navegador.

12
00:00:49,510 --> 00:00:54,695
Ahora, como usted entiende por esta especialización, JavaScript ha ido

13
00:00:54,695 --> 00:01:00,822
mucho más allá de su intención original, y ahora se está utilizando para escribir aplicaciones.

14
00:01:00,822 --> 00:01:04,688
Tanto para ejecutarse usando frameworks dentro del navegador, como

15
00:01:04,688 --> 00:01:09,880
también para ejecutar aplicaciones en el lado del servidor, como veremos en este curso.

16
00:01:11,020 --> 00:01:16,100
JavaScript originalmente nunca se diseñó con ninguna biblioteca común.

17
00:01:16,100 --> 00:01:20,907
Si nos fijamos en lenguajes de programación estándar como C, C ++, Java, etc.,

18
00:01:20,907 --> 00:01:24,374
todos tienen bibliotecas estándar que le permiten acceder

19
00:01:24,374 --> 00:01:26,730
al hardware subyacente.

20
00:01:26,730 --> 00:01:32,170
Y también proporcionar una forma estructurada de organización de la aplicación en

21
00:01:32,170 --> 00:01:36,880
varios archivos y luego combinarlos juntos cuando se crea una aplicación.

22
00:01:36,880 --> 00:01:41,580
JavaScript nunca tuvo este soporte cuando comenzó.

23
00:01:41,580 --> 00:01:45,850
Porque como entendemos, JavaScript no fue diseñado para

24
00:01:45,850 --> 00:01:48,330
el propósito para el que se está utilizando hoy en día.

25
00:01:49,420 --> 00:01:50,500
Pero, por supuesto, la

26
00:01:50,500 --> 00:01:55,710
gente entiende las dificultades cuando necesita expandir JavaScript

27
00:01:55,710 --> 00:02:01,340
más allá de un solo archivo que se utiliza como lenguaje de scripting para el navegador.

28
00:02:01,340 --> 00:02:04,750
Ahora, si tiene una aplicación JavaScript muy grande,

29
00:02:04,750 --> 00:02:10,020
se vuelve engorroso escribir todo el código en un solo archivo.

30
00:02:10,020 --> 00:02:14,890
Y, obviamente, desea que los resultados puedan dividir su aplicación en

31
00:02:14,890 --> 00:02:16,830
múltiples hechos.

32
00:02:16,830 --> 00:02:21,760
Ahora, a diferencia de los lenguajes de programación tradicionales, JavaScript nunca tuvo una forma

33
00:02:21,760 --> 00:02:26,945
de distribuir el código en varios archivos y luego combinarlos.

34
00:02:26,945 --> 00:02:32,095
Entonces, aquí es donde entró la API CommonJS para llenar este

35
00:02:32,095 --> 00:02:35,859
vacío que llena las necesidades de alguna aplicación común.

36
00:02:35,859 --> 00:02:42,832
Y este formato CommonJS define un formato de módulo que se puede utilizar para

37
00:02:42,832 --> 00:02:47,282
dividir su aplicación JavaScript en varios archivos.

38
00:02:47,282 --> 00:02:51,151
Y Node adopta ese formato CommonJS para

39
00:02:51,151 --> 00:02:55,349
organizar nuestra aplicación JavaScript en múltiples archivos.

40
00:02:55,349 --> 00:02:59,861
Y dentro de JavaScript, con el formato CommonJS,

41
00:02:59,861 --> 00:03:03,891
cada archivo se convierte en su propio módulo Node.

42
00:03:03,891 --> 00:03:09,841
Así que vamos a aprender un poco más sobre los módulos de Node en el resto de esta conferencia.

43
00:03:09,841 --> 00:03:11,931
Entonces, como acabo de mencionar,

44
00:03:11,931 --> 00:03:16,280
cada archivo en una aplicación de Node se convierte en su propio módulo de Node.

45
00:03:16,280 --> 00:03:22,290
Entonces, el archivo o el archivo JavaScript define el límite para un módulo Node.

46
00:03:22,290 --> 00:03:26,160
Entonces, dentro de ese archivo, la especificación CommonJS

47
00:03:26,160 --> 00:03:30,770
proporciona una variable llamada la variable del módulo que es un objeto JavaScript.

48
00:03:30,770 --> 00:03:36,070
Y esto le da acceso a la definición actual del módulo dentro de un archivo.

49
00:03:36,070 --> 00:03:41,020
Y en este objeto de módulo, tiene la

50
00:03:41,020 --> 00:03:45,120
propiedad module.exports que determina la exportación del módulo actual.

51
00:03:45,120 --> 00:03:49,010
Entonces, cuando asigna algo a la propiedad module.exports,

52
00:03:49,010 --> 00:03:54,100
entonces eso se convierte en el valor exportado del módulo actual.

53
00:03:54,100 --> 00:03:59,070
De modo que cuando este módulo se importa en otro archivo

54
00:03:59,070 --> 00:04:03,130
de nuestra aplicación Node, entonces todo lo que se exporte desde este módulo

55
00:04:03,130 --> 00:04:06,860
estará disponible en la segunda aplicación.

56
00:04:06,860 --> 00:04:09,330
Vamos a ver un ejemplo en breve.

57
00:04:09,330 --> 00:04:13,080
Cuando necesita importar un módulo a otro módulo,

58
00:04:13,080 --> 00:04:17,700
aquí es donde se utiliza la función require para importar el módulo.

59
00:04:17,700 --> 00:04:23,220
Así como notaremos en poco tiempo, la función require se utiliza

60
00:04:23,220 --> 00:04:28,800
para importar un módulo de nodo que se define en otro archivo en el archivo actual para

61
00:04:28,800 --> 00:04:32,790
que pueda ser utilizado dentro de nuestra aplicación de nodo.

62
00:04:33,800 --> 00:04:36,750
Los módulos de nodo pueden ser de tres categorías.

63
00:04:36,750 --> 00:04:41,842
Tenemos módulos Nodo basados en archivos donde definimos el módulo Nodo dentro de un archivo,

64
00:04:41,842 --> 00:04:46,270
dentro de nuestra aplicación y hacemos uso de él dentro de nuestra aplicación.

65
00:04:46,270 --> 00:04:51,100
Entonces, tenemos módulos centrales que ya son parte de Node.

66
00:04:51,100 --> 00:04:55,610
Los diseñadores de nodos mantuvieron estos módulos centrales intencionalmente pequeños para

67
00:04:55,610 --> 00:04:57,970
que el nodo se pueda mantener pequeño.

68
00:04:57,970 --> 00:05:01,060
Y también proporcionan suficiente funcionalidad para

69
00:05:01,060 --> 00:05:05,310
que los diseñadores de módulos externos puedan agregar en su propia

70
00:05:05,310 --> 00:05:10,320
funcionalidad que se puede aprovechar cuando desarrollamos aplicaciones de Node.

71
00:05:10,320 --> 00:05:18,580
Entonces, los módulos principales incluyen ruta, sistema de archivos, sistema operativo, util y algunos otros.

72
00:05:18,580 --> 00:05:22,670
Nos encontraremos con algunos de ellos a medida que avancemos en este curso.

73
00:05:22,670 --> 00:05:25,010
Entonces tenemos módulos Node externos.

74
00:05:25,010 --> 00:05:29,650
Estos son módulos de nodos de terceros desarrollados por los desarrolladores de nodos y, a

75
00:05:29,650 --> 00:05:33,210
continuación, disponibles a través del ecosistema de nodos.

76
00:05:33,210 --> 00:05:40,586
Por lo tanto, estos módulos nodos externos se pueden instalar dentro de nuestro sistema usando NPM.

77
00:05:40,586 --> 00:05:45,363
Tantas veces nos verías usando NPM install y

78
00:05:45,363 --> 00:05:50,937
el nombre del módulo Node y que se incluirá dentro de

79
00:05:50,937 --> 00:05:57,010
nuestra aplicación Node en una carpeta llamada node_modules folder.

80
00:05:57,010 --> 00:06:05,000
Y nos encontraremos con módulos nodos externos en una lección posterior de este curso.

81
00:06:05,000 --> 00:06:07,630
¿ Cómo hacemos uso de los módulos Node?

82
00:06:07,630 --> 00:06:13,720
Cuando necesite usar un módulo de nodo dentro de otro archivo de nodo dentro de su aplicación,

83
00:06:13,720 --> 00:06:16,960
entonces usaría la función require.

84
00:06:16,960 --> 00:06:21,180
Mencioné brevemente sobre la función de requerir en una de las

85
00:06:21,180 --> 00:06:22,440
diapositivas anteriores allí.

86
00:06:22,440 --> 00:06:26,420
La función de requerir para los módulos de nodo basados en archivos,

87
00:06:26,420 --> 00:06:29,073
especificará esto según sea necesario y

88
00:06:29,073 --> 00:06:33,955
luego especificará la ruta al archivo que contiene el módulo Node.

89
00:06:33,955 --> 00:06:39,560
Así que dirías necesario./, el nombre del módulo si el archivo existe

90
00:06:39,560 --> 00:06:45,590
en la carpeta actual escrita que existe su aplicación Node.

91
00:06:45,590 --> 00:06:51,060
Así que esto especifica la ruta relativa al archivo desde la ubicación actual.

92
00:06:51,060 --> 00:06:54,247
Y también para los módulos centrales y externos,

93
00:06:54,247 --> 00:07:00,260
normalmente los especificaría diciendo require y el nombre del módulo.

94
00:07:00,260 --> 00:07:03,090
Se especificaría explícitamente una ruta para ella.

95
00:07:03,090 --> 00:07:06,200
Si se trata de un módulo central, ya es parte de Node y por

96
00:07:06,200 --> 00:07:08,120
lo tanto se incluirá automáticamente.

97
00:07:08,120 --> 00:07:13,365
Si se trata de un módulo externo, entonces se instalará dentro de

98
00:07:13,365 --> 00:07:18,978
la carpeta node_modules en la carpeta actual, o si el nodo no

99
00:07:18,978 --> 00:07:25,327
encuentra el módulo externo dentro de la carpeta node_modules en la carpeta actual,

100
00:07:25,327 --> 00:07:31,058
subirá a la siguiente carpeta de nivel superior buscando ese módulo de nodo.

101
00:07:31,058 --> 00:07:33,989
O la siguiente carpeta de nivel superior y

102
00:07:33,989 --> 00:07:39,143
arriba de la jerarquía hasta que localice los módulos de nodo que

103
00:07:39,143 --> 00:07:44,390
luego se importarán para ser utilizados dentro de su aplicación Node.

104
00:07:44,390 --> 00:07:48,040
Si no puede encontrar el módulo Node en la jerarquía,

105
00:07:48,040 --> 00:07:52,640
entonces obviamente generará un error diciendo que falta el módulo Node.

106
00:07:52,640 --> 00:07:57,690
Esta forma de organización es muy útil en la forma en que

107
00:07:57,690 --> 00:08:03,220
se define la estructura de la aplicación de Nodo, ya que encontraremos

108
00:08:04,840 --> 00:08:08,460
más en la parte posterior de este curso.

109
00:08:08,460 --> 00:08:13,530
Con esta rápida introducción a los módulos Node, echemos un vistazo a un ejemplo

110
00:08:13,530 --> 00:08:19,150
que haremos como parte del ejercicio que sigue a esta conferencia.

111
00:08:19,150 --> 00:08:23,210
Como aprendimos en esta conferencia, el

112
00:08:23,210 --> 00:08:28,040
límite de un módulo de nodo está definido por el archivo que contiene el código aquí.

113
00:08:28,040 --> 00:08:34,060
Entonces, aquí, tengo un ejemplo de un módulo de nodo definido como rectangle.js.

114
00:08:34,060 --> 00:08:38,113
Y allí se puede ver que estoy usando dos exportaciones aquí,

115
00:08:38,113 --> 00:08:42,096
estoy diciendo exports.perímetro y exports.area.

116
00:08:42,096 --> 00:08:47,401
Y verá que aquí no estoy usando module.exports porque las exportaciones en

117
00:08:47,401 --> 00:08:52,740
sí también es una versión abreviada de module.exports.

118
00:08:52,740 --> 00:08:57,057
Entonces, si no desea usar module.exports completamente,

119
00:08:57,057 --> 00:09:01,804
sino que solo quiere exportar, entonces esta es otra forma de escribir

120
00:09:01,804 --> 00:09:06,316
aquellos elementos que se exportan desde los módulos de Node actuales.

121
00:09:06,316 --> 00:09:09,875
Así que aquí estamos exportando dos funciones, el perímetro y

122
00:09:09,875 --> 00:09:12,750
el área desde el módulo Nodo rectángulo.

123
00:09:12,750 --> 00:09:17,679
Ahora, para hacer uso de este módulo en otro archivo

124
00:09:17,679 --> 00:09:21,870
, echemos un vistazo al archivo index.js.

125
00:09:21,870 --> 00:09:27,240
Y la primera línea en este archivo notará que dice

126
00:09:27,240 --> 00:09:32,220
var rect = requerir y entre comillas,. /rectángulo.

127
00:09:32,220 --> 00:09:36,650
Así que esto está especificando que el módulo rectángulo va a ser importante aquí,

128
00:09:36,650 --> 00:09:42,090
hice uso de dentro de este archivo particular de la aplicación.

129
00:09:42,090 --> 00:09:45,670
Así que así es como definiríamos los módulos de nodo, y

130
00:09:45,670 --> 00:09:50,080
este es un ejemplo de un módulo de nodo basado en archivos.

131
00:09:50,080 --> 00:09:52,197
Encontraremos el núcleo y

132
00:09:52,197 --> 00:09:56,438
los módulos Nodo externos en lecciones posteriores de este curso.

133
00:09:56,438 --> 00:10:02,669
[ MÚSICA]