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

2
00:00:04,740 --> 00:00:09,065
Nesta lição, vamos aprender como escrever notificações simples.

3
00:00:09,065 --> 00:00:11,454
Também aprenderemos sobre módulos Node e

4
00:00:11,454 --> 00:00:16,885
como módulos Node nos permitem organizar nossos aplicativos em vários arquivos.

5
00:00:16,885 --> 00:00:20,550
Nós também aprenderemos sobre os diferentes tipos de módulos Node e

6
00:00:20,550 --> 00:00:26,450
como podemos importar módulos Node em nossos arquivos de nosso aplicativo Node e

7
00:00:26,450 --> 00:00:29,260
fazer uso deles dentro de nossa aplicação.

8
00:00:29,260 --> 00:00:34,640
Primeiro, vamos aprender sobre os módulos Node com um pouco mais de detalhes nesta palestra.

9
00:00:36,720 --> 00:00:39,320
JavaScript, quando ele é projetado pela primeira vez,

10
00:00:39,320 --> 00:00:43,900
foi concebido para ser uma linguagem de script para ser usado dentro do navegador.

11
00:00:43,900 --> 00:00:49,510
Então, o pequeno reino dentro do qual deveria ser usado é o navegador.

12
00:00:49,510 --> 00:00:54,695
Agora, como você entende a partir desta especialização, JavaScript foi

13
00:00:54,695 --> 00:01:00,822
muito além de sua intenção original, e agora está sendo usado para escrever aplicativos.

14
00:01:00,822 --> 00:01:04,688
Ambos para ser executado usando frameworks dentro do navegador, e

15
00:01:04,688 --> 00:01:09,880
também para executar aplicativos no lado do servidor, como veremos neste curso. O

16
00:01:11,020 --> 00:01:16,100
JavaScript originalmente nunca foi projetado com bibliotecas comuns.

17
00:01:16,100 --> 00:01:20,907
Se você olhar para linguagens de programação padrão como C, C++, Java e assim por diante,

18
00:01:20,907 --> 00:01:24,374
todas elas têm bibliotecas padrão que permitem que você acesse

19
00:01:24,374 --> 00:01:26,730
o hardware subjacente.

20
00:01:26,730 --> 00:01:32,170
Além disso, forneça uma forma estruturada de organizar o aplicativo em

21
00:01:32,170 --> 00:01:36,880
vários arquivos e, em seguida, combiná-los juntos quando você cria um aplicativo.

22
00:01:36,880 --> 00:01:41,580
JavaScript nunca teve qualquer suporte assim quando começou.

23
00:01:41,580 --> 00:01:45,850
Porque, como entendemos, o JavaScript não foi projetado para

24
00:01:45,850 --> 00:01:48,330
o propósito para o qual ele está sendo usado hoje.

25
00:01:49,420 --> 00:01:50,500
Mas é claro,

26
00:01:50,500 --> 00:01:55,710
as pessoas entenderam as dificuldades quando você precisa expandir JavaScript

27
00:01:55,710 --> 00:02:01,340
além de um único arquivo que é usado como uma linguagem de script para o navegador.

28
00:02:01,340 --> 00:02:04,750
Agora, se você tiver um aplicativo JavaScript muito grande,

29
00:02:04,750 --> 00:02:10,020
torna-se complicado escrever todo o código em um único arquivo.

30
00:02:10,020 --> 00:02:14,890
E obviamente você quer que os resultados sejam capazes de quebrar sua aplicação em

31
00:02:14,890 --> 00:02:16,830
vários fatos.

32
00:02:16,830 --> 00:02:21,760
Agora, ao contrário das linguagens de programação tradicionais, JavaScript nunca teve uma maneira

33
00:02:21,760 --> 00:02:26,945
de distribuir o código em vários arquivos e, em seguida, combiná-los juntos.

34
00:02:26,945 --> 00:02:32,095
Então é aqui que a API CommonJS veio para preencher essa

35
00:02:32,095 --> 00:02:35,859
lacuna que preenche as necessidades de alguma aplicação comum.

36
00:02:35,859 --> 00:02:42,832
E este formato CommonJS define um formato de módulo que pode ser usado para

37
00:02:42,832 --> 00:02:47,282
dividir seu aplicativo JavaScript em vários arquivos.

38
00:02:47,282 --> 00:02:51,151
E Node adota esse formato CommonJS para

39
00:02:51,151 --> 00:02:55,349
organizar nosso aplicativo JavaScript em vários arquivos.

40
00:02:55,349 --> 00:02:59,861
E dentro do JavaScript, com o formato CommonJS,

41
00:02:59,861 --> 00:03:03,891
cada arquivo se torna seu próprio módulo Node.

42
00:03:03,891 --> 00:03:09,841
Então vamos aprender um pouco mais sobre módulos Node no resto desta palestra.

43
00:03:09,841 --> 00:03:11,931
Então, como eu acabei de mencionar,

44
00:03:11,931 --> 00:03:16,280
cada arquivo em um aplicativo Node torna-se seu próprio módulo Node.

45
00:03:16,280 --> 00:03:22,290
Portanto, o arquivo ou o arquivo JavaScript define o limite para um módulo Node.

46
00:03:22,290 --> 00:03:26,160
Então, dentro desse arquivo, a especificação CommonJS

47
00:03:26,160 --> 00:03:30,770
fornece uma variável chamada variável módulo que é um objeto JavaScript.

48
00:03:30,770 --> 00:03:36,070
E isso lhe dá acesso à definição do módulo atual dentro de um arquivo.

49
00:03:36,070 --> 00:03:41,020
E neste objeto de módulo, você tem a

50
00:03:41,020 --> 00:03:45,120
propriedade module.exports que determina a exportação do módulo atual.

51
00:03:45,120 --> 00:03:49,010
Então, quando você atribui algo à propriedade module.exports,

52
00:03:49,010 --> 00:03:54,100
então isso se torna o valor exportado do módulo atual.

53
00:03:54,100 --> 00:03:59,070
De modo que quando este módulo é importado para outro arquivo

54
00:03:59,070 --> 00:04:03,130
do nosso aplicativo Node, em seguida, o que é exportado a partir deste módulo

55
00:04:03,130 --> 00:04:06,860
torna-se disponível no segundo aplicativo.

56
00:04:06,860 --> 00:04:09,330
Vamos olhar para um exemplo em breve.

57
00:04:09,330 --> 00:04:13,080
Quando você precisa importar um módulo para outro módulo,

58
00:04:13,080 --> 00:04:17,700
é aqui que a função require é usada para importar o módulo.

59
00:04:17,700 --> 00:04:23,220
Então, como vamos notar em um curto espaço de tempo, a função require é usado

60
00:04:23,220 --> 00:04:28,800
para importar um módulo Node que é definido em outro arquivo para o arquivo atual para

61
00:04:28,800 --> 00:04:32,790
que ele possa ser usado dentro do nosso aplicativo nó.

62
00:04:33,800 --> 00:04:36,750
Os módulos de nó podem ser de três categorias.

63
00:04:36,750 --> 00:04:41,842
Temos módulos Node baseados em arquivo onde definimos o módulo Node dentro de um arquivo,

64
00:04:41,842 --> 00:04:46,270
dentro da nossa aplicação e fazemos uso dele dentro da nossa aplicação.

65
00:04:46,270 --> 00:04:51,100
Em seguida, temos módulos de núcleo que já fazem parte do Node.

66
00:04:51,100 --> 00:04:55,610
Os designers de nó mantiveram esses módulos de núcleo intencionalmente pequeno para

67
00:04:55,610 --> 00:04:57,970
que Node pode ser mantido pequeno.

68
00:04:57,970 --> 00:05:01,060
E também fornecer funcionalidade suficiente para

69
00:05:01,060 --> 00:05:05,310
que os designers de módulos externos possam adicionar em suas próprias

70
00:05:05,310 --> 00:05:10,320
funcionalidades que podem ser aproveitadas quando desenvolvemos aplicativos Node.

71
00:05:10,320 --> 00:05:18,580
Assim, os módulos principais incluem caminho, sistema de arquivos, OS, util e alguns outros.

72
00:05:18,580 --> 00:05:22,670
Encontraremos alguns deles à medida que avançarmos neste curso.

73
00:05:22,670 --> 00:05:25,010
Em seguida, temos módulos Node externos.

74
00:05:25,010 --> 00:05:29,650
Estes são módulos de nó de terceiros que são desenvolvidos por desenvolvedores de nó e,

75
00:05:29,650 --> 00:05:33,210
em seguida, disponibilizados através do ecossistema de nó.

76
00:05:33,210 --> 00:05:40,586
Portanto, esses módulos de Node externos podem ser instalados dentro do nosso sistema usando NPM.

77
00:05:40,586 --> 00:05:45,363
Tantas vezes você nos veria usando instalação NPM e

78
00:05:45,363 --> 00:05:50,937
o nome do módulo Node e que será incluído dentro do

79
00:05:50,937 --> 00:05:57,010
nosso aplicativo Node em uma pasta chamada pasta node_modules.

80
00:05:57,010 --> 00:06:05,000
E vamos encontrar módulos de Node externos em uma lição posterior neste curso.

81
00:06:05,000 --> 00:06:07,630
Como fazer uso de módulos Node?

82
00:06:07,630 --> 00:06:13,720
Quando você precisa usar um módulo Node dentro de outro arquivo Node dentro de seu aplicativo,

83
00:06:13,720 --> 00:06:16,960
em seguida, você usaria a função require.

84
00:06:16,960 --> 00:06:21,180
Eu mencionei brevemente sobre a função require em um dos

85
00:06:21,180 --> 00:06:22,440
slides anteriores lá.

86
00:06:22,440 --> 00:06:26,420
A função require para módulos Node baseados em arquivo,

87
00:06:26,420 --> 00:06:29,073
você especificará isso conforme necessário e,

88
00:06:29,073 --> 00:06:33,955
em seguida, especifique o caminho para o arquivo que contém o módulo Node.

89
00:06:33,955 --> 00:06:39,560
Então você diria require./, o nome do módulo se o arquivo existir

90
00:06:39,560 --> 00:06:45,590
na pasta atual escrita que seu aplicativo Node existe.

91
00:06:45,590 --> 00:06:51,060
Então isso especifica o caminho relativo para o arquivo a partir do local atual.

92
00:06:51,060 --> 00:06:54,247
E também para o núcleo e módulos externos,

93
00:06:54,247 --> 00:07:00,260
você normalmente os especificaria dizendo require e o nome do módulo.

94
00:07:00,260 --> 00:07:03,090
Você especificaria explicitamente um caminho para ele.

95
00:07:03,090 --> 00:07:06,200
Se for um módulo núcleo, ele já faz parte do Node e por

96
00:07:06,200 --> 00:07:08,120
isso será incluído automaticamente.

97
00:07:08,120 --> 00:07:13,365
Se for um módulo externo, em seguida, ele será instalado dentro

98
00:07:13,365 --> 00:07:18,978
da pasta node_modules na pasta atual, ou se o Node não

99
00:07:18,978 --> 00:07:25,327
encontrar o módulo externo dentro da pasta node_modules na pasta atual,

100
00:07:25,327 --> 00:07:31,058
ele irá até a próxima pasta de nível superior procurando por esse módulo Node.

101
00:07:31,058 --> 00:07:33,989
Ou a próxima pasta de nível superior e

102
00:07:33,989 --> 00:07:39,143
até a hierarquia até localizar os módulos de nó que serão

103
00:07:39,143 --> 00:07:44,390
então importados para ser usado dentro de seu aplicativo Node.

104
00:07:44,390 --> 00:07:48,040
Se ele é incapaz de encontrar o módulo Node até a hierarquia,

105
00:07:48,040 --> 00:07:52,640
então ele obviamente irá levantar um erro dizendo que o módulo Node está ausente.

106
00:07:52,640 --> 00:07:57,690
Esta forma de organização é muito útil na forma como

107
00:07:57,690 --> 00:08:03,220
a estrutura da aplicação Node é definida como vamos encontrar

108
00:08:04,840 --> 00:08:08,460
mais na parte posterior deste curso.

109
00:08:08,460 --> 00:08:13,530
Com esta introdução rápida aos módulos Node, vamos dar uma olhada em um exemplo

110
00:08:13,530 --> 00:08:19,150
que faremos como parte do exercício que segue esta palestra.

111
00:08:19,150 --> 00:08:23,210
Como aprendemos nesta palestra, o

112
00:08:23,210 --> 00:08:28,040
limite de um módulo Node é definido pelo arquivo que contém o código aqui.

113
00:08:28,040 --> 00:08:34,060
Então, aqui, eu tenho um exemplo de um módulo Node definido como rectangle.js.

114
00:08:34,060 --> 00:08:38,113
E lá você pode ver que estou usando duas exportações aqui,

115
00:08:38,113 --> 00:08:42,096
estou dizendo exportações.perímetro e exportações.area.

116
00:08:42,096 --> 00:08:47,401
E você verá que aqui eu não estou usando module.export porque as

117
00:08:47,401 --> 00:08:52,740
exportações em si também é uma versão abreviada do module.export.

118
00:08:52,740 --> 00:08:57,057
Então, se você não quiser usar module.exports completamente, mas

119
00:08:57,057 --> 00:09:01,804
em vez disso apenas deseja exportar, então esta é outra maneira de escrever

120
00:09:01,804 --> 00:09:06,316
os itens que são exportados dos módulos Node atuais.

121
00:09:06,316 --> 00:09:09,875
Então aqui estamos exportando duas funções, o perímetro e

122
00:09:09,875 --> 00:09:12,750
a área do módulo de nó retângulo.

123
00:09:12,750 --> 00:09:17,679
Agora, a fim de fazer uso deste módulo em outro arquivo,

124
00:09:17,679 --> 00:09:21,870
então vamos dar uma olhada no arquivo index.js.

125
00:09:21,870 --> 00:09:27,240
E a primeira linha neste arquivo você vai notar que ele diz

126
00:09:27,240 --> 00:09:32,220
var rect = require e dentro de aspas,. /retângulo.

127
00:09:32,220 --> 00:09:36,650
Então isso é especificar que o módulo retângulo vai ser importante aqui,

128
00:09:36,650 --> 00:09:42,090
eu fiz uso de dentro deste arquivo particular da aplicação.

129
00:09:42,090 --> 00:09:45,670
Então, é assim que definiríamos módulos de nó, e

130
00:09:45,670 --> 00:09:50,080
este é um exemplo de um módulo de nó baseado em arquivo.

131
00:09:50,080 --> 00:09:52,197
Encontraremos o núcleo e

132
00:09:52,197 --> 00:09:56,438
os módulos de Node externos nas lições posteriores deste curso.

133
00:09:56,438 --> 00:10:02,669
[ MUSIC]