Nas lições anteriores,
aprendemos sobre Node.
Nós também vimos como Node pode ser usado para configurar um servidor Web.
Agora, os designers de Node intencionalmente mantiveram o nó pequeno com um pequeno número de
módulos de código para que eles possam deixar para
desenvolvedores de terceiros para chegar a soluções inovadoras para problemas.
Então, uma vez que Node foi lançado um número de desenvolvedores de terceiros começaram a projetar
e lançar módulos de terceiros interessantes que podem ser executados em cima da plataforma Node.
Agora você viu um número de módulos Node que poderiam ser
usados para desenvolvimento front-end nos cursos anteriores.
Agora, neste curso, estamos olhando para o desenvolvimento do lado do servidor e no lado do servidor,
um dos módulos ou
frameworks de terceiros mais populares para a construção de servidores HTTP é o Express.
Vamos olhar para alguns detalhes do Express
nesta palestra e, em seguida, vamos fazer uso do Express para
construir um servidor que serve a API REST durante todo o resto deste curso.
Primeiro, o que é Express?
Express é uma
estrutura rápida, sem opinião e minimalista que é executada em cima do Node.js e suporta o desenvolvimento da Web.
Esta é a definição que eu peguei emprestado do expressjs.com,
o site onde a documentação relacionada Express está disponível para nós.
Now Express permite que você desenvolva um aplicativo Web,
aplicativo do lado do servidor que servirá conteúdo para consumo pelo nosso front-end.
O Express fornece um conjunto robusto de recursos que exploraremos com
mais detalhes através do resto das lições deste curso.
Expresse-se como eu disse é uma estrutura minimalista,
e Express também fornece uma maneira de estender e adicionar
funcionalidade ao Express através de middleware de terceiros.
Isso amplia a funcionalidade do Express e adiciona mais recursos conforme necessário.
Assim, você pode criar seu servidor Web usando o mesmo número de middleware de terceiros
necessário para atender às necessidades do seu servidor Web que você está projetando.
Analisaremos alguns exemplos de middleware de terceiros nesta lição e
também exploraremos mais deles à medida que passamos pelo resto das lições deste curso.
Para usar o Express em seu projeto, é claro,
o primeiro passo é instalar o Express e como o Express é um módulo Node,
nós o instalamos dizendo npm install express —save
e isso instalaria o Express em seu projeto local.
Veremos o uso disso no exercício que se segue a esta palestra.
Vamos falar brevemente sobre o middleware Express.
Então, qual é exatamente o propósito do middleware?
O middleware que o Express suporta fornece uma grande quantidade de
funcionalidade de plug-in que seria usado para melhorar o seu aplicativo Express,
funcionalidade de plug-in como, por exemplo, vamos olhar para
um middleware chamado Morgan que permite que você
imprima informações de log para a tela sobre o solicitações que entram em seu servidor.
Da mesma forma, vamos olhar para outro middleware chamado BodyParser,
que permite analisar o corpo da
mensagem de solicitação HTTP de entrada e extrair
informações a partir dele para uso dentro do seu aplicativo Express.
Veremos o uso destes no exercício que se segue.
Como eu mencionei, Morgan faz registro de informações para o console no lado do servidor,
informações sobre as solicitações de entrada.
Da mesma forma, eles podem servir recursos Web estáticos do nosso servidor usando a
estática Express para que isso servirá informações de uma pasta dentro do nosso projeto Express,
e ao declarar o projeto você pode dizer que eu sou
nome de arquivo de sublinhado duplo e nome de diretório de sublinhado duplo ou dirname que
dá-lhe o caminho completo para o arquivo ou o diretório para
o módulo atual e você vai me ver usando isso no exercício.
Agora que temos entendido um pouco sobre
Express e o middleware que o Express usa,
vamos olhar para um módulo Node
porque esta é a primeira vez que estamos encontrando um terceiro módulos Node,
vamos olhar para alguns detalhes sobre os módulos de nó de terceiros, então, se vamos examinar o
package.json para ver o que está contido no arquivo package.json,
também veremos o versionamento semântico.
Assim, quando você especifica a versão do pacote que você usa,
você sempre especifica a versão especificando o patch Version.Minor Version.The.
Então, quando você instala um pacote,
ele é sempre identificado por esses três números,
versão principal que pode introduzir mudanças quebrando, o que significa que se você estiver
instalando uma versão mais recente do pacote pode não ser
completamente compatível com versões anteriores.
Ele pode introduzir alterações de quebra em que você pode precisar voltar e corrigir
o código que você pode ter escrito na versão anterior do seu projeto.
A versão secundária introduz
algumas pequenas alterações no seu pacote e pode não estar quebrando alterações.
Um patch seria uma correção de bug que é frequentemente emitida, em seguida, um pequeno bug é descoberto.
Portanto, os patches geralmente não levam a quaisquer alterações quebradas e assim você pode facilmente usar
uma versão superior ou uma versão de patch superior de
um pacote específico que você está usando no seu aplicativo Node.
Quando você está instalando um pacote, você pode especificar
a versão exata do pacote a ser instalado dizendo npm install,
por exemplo, se você quiser instalar a
versão 4.0.0 do Express, você pode dizer express @4 .0.0.
Então você está especificando explicitamente qual versão do pacote instalar.
Se você estiver bem com uma versão de patch de nível superior,
você diria npm install express@"~4.0.0 Se
uma versão menor superior de um pacote
for aceitável, você diria @ e o nome do pacote.
Agora este tipo de informação também é salvo no arquivo package.json,
vamos rapidamente fazer uma visita ao pacote do arquivo json
onde você vai notar algumas dessas informações sendo salvas.
Agora, quando você fizer o exercício que segue esta palestra,
você verá isso no arquivo package.json.
Este será o resultado da conclusão do exercício que se segue a esta palestra.
No exercício, vamos construir um servidor Web simples usando Express.
Agora deixe-me levá-lo através de uma rápida turnê de package.json
para ilustrar algumas informações em package.json.
Então, no arquivo package.json você vai notar esta informação aqui,
esta propriedade para o nosso json que é armazenado aqui chamado Dependências.
As dependências é onde você irá especificar
quais módulos de terceiros adicionais em
que este projeto de nó particular é dependente, de
modo que você pode ver aqui estamos dizendo que este projeto é dependente do Express
e Morgan e note em particular como esta informação é especificada Aqui.
Então isso é ^4.16.3, o que significa que isso
funcionará com qualquer versão que seja 4.16.3 ou superior.
Você pode usar uma versão secundária de nível superior e este projeto ainda estará
bem com ele e da mesma forma para Morgan nós especificamos as informações aqui.
Portanto, esta informação adicional é adicionada ao arquivo package.json sempre que você
instalar o npm e dizer —save flag para a instalação do npm.
Agora, você também vai notar que eu criei um arquivo.gitignore aqui e dentro do
arquivo.gitignore eu especifiquei que git deve ignorar a pasta de módulos Node.
Então, o que exatamente está contido na pasta de módulos Node?
Se você instalar módulos de terceiros em seu aplicativo Node,
todos esses módulos de terceiros serão salvos na pasta módulos Node aqui,
então dentro de seu projeto você verá que a pasta de módulos Node foi criada aqui.
E dando uma olhada na pasta de módulos de nó, você verá
um monte de pacotes que foram instalados.
Agora todos eles foram instalados porque você
instala Express e Express por sua vez depende de
alguns outros pacotes que são necessários para que todos eles também são instalados aqui por padrão.
Em particular, deixe-me também chamar a sua atenção para o pacote Express aqui,
então, se você entrar no pacote Express, você verá
informações adicionais sendo armazenadas no pacote Express,
então perspectiva de índice também desde que o próprio Express é
um módulo Node, você verá um
arquivo.json package.json dentro Express também que contém
informações adicionais que, naturalmente, é muito detalhado lá,
difícil para nós entender, mas note em particular
que o próprio Express é dependente de muitos outros módulos Node aqui.
E essa é a razão pela qual todos esses outros módulos Node
também foram instalados na pasta de módulos Node.
Então, quando você instalar o Express,
isso irá imediatamente também acionar todas as suas dependências também para ser instalado porque
Express exigirá esses outros módulos de nó para que ele faça o seu trabalho.
Além disso, dentro do Express também você verá o arquivo index.js.
Então este é o ponto de partida para o nosso módulo Express Node
em si e note em particular que o arquivo index.js simplesmente diz module.exports exigem lib express.
Então o código real para o módulo Express em si está dentro deste projeto lib,
pasta lib aqui e você pode ver os detalhes.
Então, se você está curioso para ver os detalhes do próprio Express você pode ir e olhar
lá dentro, mas novamente isso pode ser um pouco demais para você neste momento.
Por enquanto, apenas aceite o fato de que o Express fará seu trabalho como esperado.
Mas eu pensei que será uma experiência interessante para visitar a pasta do módulo Node
para olhar para uma estrutura de um módulo de nó de terceiros em particular com um pouco mais de detalhes.
Além disso, você notará que há outro arquivo
aqui chamado package-lock.json que está instalado.
Agora isso está sendo instalado pelas versões mais recentes do npm.
O arquivo package-lock.json é gerado automaticamente pelo
npm que armazena informações sobre
a árvore exata que foi gerada quando você instala
outros módulos Node e isso é muito útil quando você
precisa fazer a instalação dos módulos Node em outro local.
Então, por exemplo, se você baixar um repositório Git e
tentar recriar este projeto em outro computador,
você simplesmente digitar npm install no prompt e
isso solicitará que seu aplicativo Node
instale automaticamente tudo o que é especificado nas dependências aqui para você.
Ao criar que o package-lock.json armazena informações adicionais que são usadas pelo
npm para fazer a instalação correta de todos os módulos npm necessários.
Agora, no momento, você não precisa se preocupar com os detalhes do
que está lá dentro do arquivo package-lock.json.
Com isso, completamos esta lição onde examinamos alguns detalhes sobre o Express.