1
00:00:03,650 --> 00:00:06,464
Nas lições anteriores,

2
00:00:06,464 --> 00:00:08,580
aprendemos sobre Node.

3
00:00:08,580 --> 00:00:13,215
Nós também vimos como Node pode ser usado para configurar um servidor Web.

4
00:00:13,215 --> 00:00:20,460
Agora, os designers de Node intencionalmente mantiveram o nó pequeno com um pequeno número de

5
00:00:20,460 --> 00:00:24,480
módulos de código para que eles possam deixar para

6
00:00:24,480 --> 00:00:29,730
desenvolvedores de terceiros para chegar a soluções inovadoras para problemas.

7
00:00:29,730 --> 00:00:37,590
Então, uma vez que Node foi lançado um número de desenvolvedores de terceiros começaram a projetar

8
00:00:37,590 --> 00:00:45,875
e lançar módulos de terceiros interessantes que podem ser executados em cima da plataforma Node.

9
00:00:45,875 --> 00:00:50,030
Agora você viu um número de módulos Node que poderiam ser

10
00:00:50,030 --> 00:00:54,185
usados para desenvolvimento front-end nos cursos anteriores.

11
00:00:54,185 --> 00:00:59,240
Agora, neste curso, estamos olhando para o desenvolvimento do lado do servidor e no lado do servidor,

12
00:00:59,240 --> 00:01:03,020
um dos módulos ou

13
00:01:03,020 --> 00:01:08,720
frameworks de terceiros mais populares para a construção de servidores HTTP é o Express.

14
00:01:08,720 --> 00:01:11,480
Vamos olhar para alguns detalhes do Express

15
00:01:11,480 --> 00:01:14,345
nesta palestra e, em seguida, vamos fazer uso do Express para

16
00:01:14,345 --> 00:01:21,725
construir um servidor que serve a API REST durante todo o resto deste curso.

17
00:01:21,725 --> 00:01:25,670
Primeiro, o que é Express?

18
00:01:25,670 --> 00:01:30,355
Express é uma

19
00:01:30,355 --> 00:01:37,519
estrutura rápida, sem opinião e minimalista que é executada em cima do Node.js e suporta o desenvolvimento da Web.

20
00:01:37,519 --> 00:01:42,570
Esta é a definição que eu peguei emprestado do expressjs.com,

21
00:01:42,570 --> 00:01:48,025
o site onde a documentação relacionada Express está disponível para nós.

22
00:01:48,025 --> 00:01:53,769
Now Express permite que você desenvolva um aplicativo Web,

23
00:01:53,769 --> 00:02:02,385
aplicativo do lado do servidor que servirá conteúdo para consumo pelo nosso front-end.

24
00:02:02,385 --> 00:02:07,730
O Express fornece um conjunto robusto de recursos que exploraremos com

25
00:02:07,730 --> 00:02:13,610
mais detalhes através do resto das lições deste curso.

26
00:02:13,610 --> 00:02:17,425
Expresse-se como eu disse é uma estrutura minimalista,

27
00:02:17,425 --> 00:02:21,020
e Express também fornece uma maneira de estender e adicionar

28
00:02:21,020 --> 00:02:25,465
funcionalidade ao Express através de middleware de terceiros.

29
00:02:25,465 --> 00:02:31,830
Isso amplia a funcionalidade do Express e adiciona mais recursos conforme necessário.

30
00:02:31,830 --> 00:02:38,750
Assim, você pode criar seu servidor Web usando o mesmo número de middleware de terceiros

31
00:02:38,750 --> 00:02:46,070
necessário para atender às necessidades do seu servidor Web que você está projetando.

32
00:02:46,070 --> 00:02:52,130
Analisaremos alguns exemplos de middleware de terceiros nesta lição e

33
00:02:52,130 --> 00:02:58,170
também exploraremos mais deles à medida que passamos pelo resto das lições deste curso.

34
00:02:58,170 --> 00:03:01,520
Para usar o Express em seu projeto, é claro,

35
00:03:01,520 --> 00:03:05,730
o primeiro passo é instalar o Express e como o Express é um módulo Node,

36
00:03:05,730 --> 00:03:10,940
nós o instalamos dizendo npm install express —save

37
00:03:10,940 --> 00:03:17,145
e isso instalaria o Express em seu projeto local.

38
00:03:17,145 --> 00:03:21,865
Veremos o uso disso no exercício que se segue a esta palestra.

39
00:03:21,865 --> 00:03:25,670
Vamos falar brevemente sobre o middleware Express.

40
00:03:25,670 --> 00:03:28,425
Então, qual é exatamente o propósito do middleware?

41
00:03:28,425 --> 00:03:32,510
O middleware que o Express suporta fornece uma grande quantidade de

42
00:03:32,510 --> 00:03:38,370
funcionalidade de plug-in que seria usado para melhorar o seu aplicativo Express,

43
00:03:38,370 --> 00:03:41,165
funcionalidade de plug-in como, por exemplo, vamos olhar para

44
00:03:41,165 --> 00:03:45,500
um middleware chamado Morgan que permite que você

45
00:03:45,500 --> 00:03:52,490
imprima informações de log para a tela sobre o solicitações que entram em seu servidor.

46
00:03:52,490 --> 00:03:56,494
Da mesma forma, vamos olhar para outro middleware chamado BodyParser,

47
00:03:56,494 --> 00:03:59,090
que permite analisar o corpo da

48
00:03:59,090 --> 00:04:02,375
mensagem de solicitação HTTP de entrada e extrair

49
00:04:02,375 --> 00:04:06,450
informações a partir dele para uso dentro do seu aplicativo Express.

50
00:04:06,450 --> 00:04:11,395
Veremos o uso destes no exercício que se segue.

51
00:04:11,395 --> 00:04:18,455
Como eu mencionei, Morgan faz registro de informações para o console no lado do servidor,

52
00:04:18,455 --> 00:04:21,645
informações sobre as solicitações de entrada.

53
00:04:21,645 --> 00:04:28,145
Da mesma forma, eles podem servir recursos Web estáticos do nosso servidor usando a

54
00:04:28,145 --> 00:04:35,855
estática Express para que isso servirá informações de uma pasta dentro do nosso projeto Express,

55
00:04:35,855 --> 00:04:39,785
e ao declarar o projeto você pode dizer que eu sou

56
00:04:39,785 --> 00:04:44,690
nome de arquivo de sublinhado duplo e nome de diretório de sublinhado duplo ou dirname que

57
00:04:44,690 --> 00:04:48,410
dá-lhe o caminho completo para o arquivo ou o diretório para

58
00:04:48,410 --> 00:04:53,535
o módulo atual e você vai me ver usando isso no exercício.

59
00:04:53,535 --> 00:04:55,640
Agora que temos entendido um pouco sobre

60
00:04:55,640 --> 00:04:58,695
Express e o middleware que o Express usa,

61
00:04:58,695 --> 00:05:02,930
vamos olhar para um módulo Node

62
00:05:02,930 --> 00:05:06,499
porque esta é a primeira vez que estamos encontrando um terceiro módulos Node,

63
00:05:06,499 --> 00:05:10,460
vamos olhar para alguns detalhes sobre os módulos de nó de terceiros, então, se vamos examinar o

64
00:05:10,460 --> 00:05:15,000
package.json para ver o que está contido no arquivo package.json,

65
00:05:15,000 --> 00:05:17,920
também veremos o versionamento semântico.

66
00:05:17,920 --> 00:05:22,550
Assim, quando você especifica a versão do pacote que você usa,

67
00:05:22,550 --> 00:05:31,745
você sempre especifica a versão especificando o patch Version.Minor Version.The.

68
00:05:31,745 --> 00:05:35,685
Então, quando você instala um pacote,

69
00:05:35,685 --> 00:05:39,230
ele é sempre identificado por esses três números,

70
00:05:39,230 --> 00:05:45,440
versão principal que pode introduzir mudanças quebrando, o que significa que se você estiver

71
00:05:45,440 --> 00:05:48,560
instalando uma versão mais recente do pacote pode não ser

72
00:05:48,560 --> 00:05:51,920
completamente compatível com versões anteriores.

73
00:05:51,920 --> 00:05:55,370
Ele pode introduzir alterações de quebra em que você pode precisar voltar e corrigir

74
00:05:55,370 --> 00:05:59,905
o código que você pode ter escrito na versão anterior do seu projeto.

75
00:05:59,905 --> 00:06:01,790
A versão secundária introduz

76
00:06:01,790 --> 00:06:06,385
algumas pequenas alterações no seu pacote e pode não estar quebrando alterações.

77
00:06:06,385 --> 00:06:14,800
Um patch seria uma correção de bug que é frequentemente emitida, em seguida, um pequeno bug é descoberto.

78
00:06:14,800 --> 00:06:21,005
Portanto, os patches geralmente não levam a quaisquer alterações quebradas e assim você pode facilmente usar

79
00:06:21,005 --> 00:06:24,395
uma versão superior ou uma versão de patch superior de

80
00:06:24,395 --> 00:06:30,215
um pacote específico que você está usando no seu aplicativo Node.

81
00:06:30,215 --> 00:06:33,410
Quando você está instalando um pacote, você pode especificar

82
00:06:33,410 --> 00:06:38,465
a versão exata do pacote a ser instalado dizendo npm install,

83
00:06:38,465 --> 00:06:40,460
por exemplo, se você quiser instalar a

84
00:06:40,460 --> 00:06:44,630
versão 4.0.0 do Express, você pode dizer express @4 .0.0.

85
00:06:44,630 --> 00:06:51,635
Então você está especificando explicitamente qual versão do pacote instalar.

86
00:06:51,635 --> 00:06:55,630
Se você estiver bem com uma versão de patch de nível superior,

87
00:06:55,630 --> 00:07:02,590
você diria npm install express@"~4.0.0 Se

88
00:07:02,590 --> 00:07:07,190
uma versão menor superior de um pacote

89
00:07:07,190 --> 00:07:13,125
for aceitável, você diria @ e o nome do pacote.

90
00:07:13,125 --> 00:07:17,210
Agora este tipo de informação também é salvo no arquivo package.json,

91
00:07:17,210 --> 00:07:20,070
vamos rapidamente fazer uma visita ao pacote do arquivo json

92
00:07:20,070 --> 00:07:23,750
onde você vai notar algumas dessas informações sendo salvas.

93
00:07:23,750 --> 00:07:27,575
Agora, quando você fizer o exercício que segue esta palestra,

94
00:07:27,575 --> 00:07:31,845
você verá isso no arquivo package.json.

95
00:07:31,845 --> 00:07:38,325
Este será o resultado da conclusão do exercício que se segue a esta palestra.

96
00:07:38,325 --> 00:07:43,230
No exercício, vamos construir um servidor Web simples usando Express.

97
00:07:43,230 --> 00:07:46,570
Agora deixe-me levá-lo através de uma rápida turnê de package.json

98
00:07:46,570 --> 00:07:50,470
para ilustrar algumas informações em package.json.

99
00:07:50,470 --> 00:07:56,530
Então, no arquivo package.json você vai notar esta informação aqui,

100
00:07:56,530 --> 00:08:00,525
esta propriedade para o nosso json que é armazenado aqui chamado Dependências.

101
00:08:00,525 --> 00:08:04,250
As dependências é onde você irá especificar

102
00:08:04,250 --> 00:08:07,400
quais módulos de terceiros adicionais em

103
00:08:07,400 --> 00:08:10,700
que este projeto de nó particular é dependente, de

104
00:08:10,700 --> 00:08:15,230
modo que você pode ver aqui estamos dizendo que este projeto é dependente do Express

105
00:08:15,230 --> 00:08:20,540
e Morgan e note em particular como esta informação é especificada Aqui.

106
00:08:20,540 --> 00:08:25,715
Então isso é ^4.16.3, o que significa que isso

107
00:08:25,715 --> 00:08:31,380
funcionará com qualquer versão que seja 4.16.3 ou superior.

108
00:08:31,380 --> 00:08:35,725
Você pode usar uma versão secundária de nível superior e este projeto ainda estará

109
00:08:35,725 --> 00:08:40,970
bem com ele e da mesma forma para Morgan nós especificamos as informações aqui.

110
00:08:40,970 --> 00:08:47,345
Portanto, esta informação adicional é adicionada ao arquivo package.json sempre que você

111
00:08:47,345 --> 00:08:55,035
instalar o npm e dizer —save flag para a instalação do npm.

112
00:08:55,035 --> 00:09:02,040
Agora, você também vai notar que eu criei um arquivo.gitignore aqui e dentro do

113
00:09:02,040 --> 00:09:09,770
arquivo.gitignore eu especifiquei que git deve ignorar a pasta de módulos Node.

114
00:09:09,770 --> 00:09:13,275
Então, o que exatamente está contido na pasta de módulos Node?

115
00:09:13,275 --> 00:09:20,704
Se você instalar módulos de terceiros em seu aplicativo Node,

116
00:09:20,704 --> 00:09:26,270
todos esses módulos de terceiros serão salvos na pasta módulos Node aqui,

117
00:09:26,270 --> 00:09:31,420
então dentro de seu projeto você verá que a pasta de módulos Node foi criada aqui.

118
00:09:31,420 --> 00:09:34,550
E dando uma olhada na pasta de módulos de nó, você verá

119
00:09:34,550 --> 00:09:38,495
um monte de pacotes que foram instalados.

120
00:09:38,495 --> 00:09:40,490
Agora todos eles foram instalados porque você

121
00:09:40,490 --> 00:09:43,250
instala Express e Express por sua vez depende de

122
00:09:43,250 --> 00:09:50,550
alguns outros pacotes que são necessários para que todos eles também são instalados aqui por padrão.

123
00:09:50,550 --> 00:09:55,850
Em particular, deixe-me também chamar a sua atenção para o pacote Express aqui,

124
00:09:55,850 --> 00:09:59,045
então, se você entrar no pacote Express, você verá

125
00:09:59,045 --> 00:10:02,470
informações adicionais sendo armazenadas no pacote Express,

126
00:10:02,470 --> 00:10:06,435
então perspectiva de índice também desde que o próprio Express é

127
00:10:06,435 --> 00:10:10,924
um módulo Node, você verá um

128
00:10:10,924 --> 00:10:14,015
arquivo.json package.json dentro Express também que contém

129
00:10:14,015 --> 00:10:19,865
informações adicionais que, naturalmente, é muito detalhado lá,

130
00:10:19,865 --> 00:10:25,280
difícil para nós entender, mas note em particular

131
00:10:25,280 --> 00:10:31,330
que o próprio Express é dependente de muitos outros módulos Node aqui.

132
00:10:31,330 --> 00:10:34,820
E essa é a razão pela qual todos esses outros módulos Node

133
00:10:34,820 --> 00:10:38,250
também foram instalados na pasta de módulos Node.

134
00:10:38,250 --> 00:10:40,160
Então, quando você instalar o Express,

135
00:10:40,160 --> 00:10:45,020
isso irá imediatamente também acionar todas as suas dependências também para ser instalado porque

136
00:10:45,020 --> 00:10:50,980
Express exigirá esses outros módulos de nó para que ele faça o seu trabalho.

137
00:10:50,980 --> 00:10:54,590
Além disso, dentro do Express também você verá o arquivo index.js.

138
00:10:54,590 --> 00:11:00,125
Então este é o ponto de partida para o nosso módulo Express Node

139
00:11:00,125 --> 00:11:05,690
em si e note em particular que o arquivo index.js simplesmente diz module.exports exigem lib express.

140
00:11:05,690 --> 00:11:12,645
Então o código real para o módulo Express em si está dentro deste projeto lib,

141
00:11:12,645 --> 00:11:16,225
pasta lib aqui e você pode ver os detalhes.

142
00:11:16,225 --> 00:11:20,900
Então, se você está curioso para ver os detalhes do próprio Express você pode ir e olhar

143
00:11:20,900 --> 00:11:25,560
lá dentro, mas novamente isso pode ser um pouco demais para você neste momento.

144
00:11:25,560 --> 00:11:31,815
Por enquanto, apenas aceite o fato de que o Express fará seu trabalho como esperado.

145
00:11:31,815 --> 00:11:38,450
Mas eu pensei que será uma experiência interessante para visitar a pasta do módulo Node

146
00:11:38,450 --> 00:11:45,435
para olhar para uma estrutura de um módulo de nó de terceiros em particular com um pouco mais de detalhes.

147
00:11:45,435 --> 00:11:48,530
Além disso, você notará que há outro arquivo

148
00:11:48,530 --> 00:11:52,010
aqui chamado package-lock.json que está instalado.

149
00:11:52,010 --> 00:11:56,690
Agora isso está sendo instalado pelas versões mais recentes do npm.

150
00:11:56,690 --> 00:12:01,190
O arquivo package-lock.json é gerado automaticamente pelo

151
00:12:01,190 --> 00:12:06,259
npm que armazena informações sobre

152
00:12:06,259 --> 00:12:10,265
a árvore exata que foi gerada quando você instala

153
00:12:10,265 --> 00:12:14,630
outros módulos Node e isso é muito útil quando você

154
00:12:14,630 --> 00:12:22,660
precisa fazer a instalação dos módulos Node em outro local.

155
00:12:22,660 --> 00:12:27,620
Então, por exemplo, se você baixar um repositório Git e

156
00:12:27,620 --> 00:12:32,865
tentar recriar este projeto em outro computador,

157
00:12:32,865 --> 00:12:35,930
você simplesmente digitar npm install no prompt e

158
00:12:35,930 --> 00:12:39,050
isso solicitará que seu aplicativo Node

159
00:12:39,050 --> 00:12:45,810
instale automaticamente tudo o que é especificado nas dependências aqui para você.

160
00:12:45,810 --> 00:12:53,335
Ao criar que o package-lock.json armazena informações adicionais que são usadas pelo

161
00:12:53,335 --> 00:13:01,805
npm para fazer a instalação correta de todos os módulos npm necessários.

162
00:13:01,805 --> 00:13:05,090
Agora, no momento, você não precisa se preocupar com os detalhes do

163
00:13:05,090 --> 00:13:08,290
que está lá dentro do arquivo package-lock.json.

164
00:13:08,290 --> 00:13:15,550
Com isso, completamos esta lição onde examinamos alguns detalhes sobre o Express.