Estamos começando a publicar uma série de materiais que são uma tradução passo a passo do
tutorial do Node.js. para iniciantes. Nomeadamente, neste caso, o "iniciante" é alguém que tem algum conhecimento do JavaScript do navegador. Ele ouviu dizer que há uma plataforma de servidor, programas para os quais também são escritos em JS, e gostaria de dominar essa plataforma. Talvez você encontre aqui algo útil para si mesmo se já estiver familiarizado com o Node.js.
A propósito, no ano passado, tivemos um
projeto semelhante em termos de scripts bash. Depois de publicar todos os materiais planejados, os coletamos na forma de um
arquivo PDF . Também está planejado fazer esse tempo.

Hoje, discutiremos os recursos do Node.js, começaremos a conhecer o ecossistema dessa plataforma e escreveremos o "Hello World" do lado do servidor.
[Aconselhamos a ler] Outras partes do cicloParte 1:
Informações gerais e introduçãoParte 2:
JavaScript, V8, alguns truques de desenvolvimentoParte 3:
Hospedagem, REPL, trabalho com o console, módulosParte 4:
arquivos npm, package.json e package-lock.jsonParte 5:
npm e npxParte 6:
loop de eventos, pilha de chamadas, temporizadoresParte 7:
Programação assíncronaParte 8:
Guia Node.js, Parte 8: Protocolos HTTP e WebSocketParte 9:
Guia Node.js, parte 9: trabalhando com o sistema de arquivosParte 10:
Guia Node.js, Parte 10: Módulos padrão, fluxos, bancos de dados, NODE_ENVPDF completo do Guia Node.js. Revisão do Node.js
O Node.js é um tempo de execução JavaScript de plataforma aberta de código aberto que é executado nos servidores. Desde o lançamento desta plataforma em 2009, ela se tornou extremamente popular e hoje desempenha um papel muito importante no campo do desenvolvimento web. Se você considerar o número de estrelas que um determinado projeto no GitHub coletou como um indicador de popularidade, o
Node.js , que possui mais de 50.000 estrelas, é um projeto muito, muito popular.
A plataforma Node.js é baseada no mecanismo JavaScript V8 do Google, usado no navegador Google Chrome. Essa plataforma é usada principalmente para criar servidores da Web, mas seu escopo não se limita a isso.
Considere os principais recursos do Node.js.
▍Velocidade
Um dos principais recursos atraentes do Node.js é a velocidade. O código JavaScript em execução no Node.js pode ser duas vezes mais rápido que o código escrito em linguagens compiladas como C ou Java, e ordens de magnitude mais rápidas que as linguagens interpretadas como Python ou Ruby. O motivo disso é a arquitetura sem bloqueio da plataforma, e os resultados específicos dependem dos testes de desempenho utilizados, mas, em geral, o Node.js é uma plataforma muito rápida.
PlicSimplicidade
A plataforma Node.js é fácil de aprender e usar. Na verdade, é realmente muito simples, é especialmente perceptível em comparação com algumas outras plataformas de servidor.
▍JavaScript
O Node.js executa o código escrito em JavaScript. Isso significa que milhões de desenvolvedores de front-end que já usam JavaScript no navegador podem escrever o código do servidor e do cliente na mesma linguagem de programação sem precisar aprender uma ferramenta completamente nova para mudar para o desenvolvimento do servidor.
O navegador e o servidor usam os mesmos conceitos de idioma. Além disso, no Node.js, você pode mudar rapidamente para o uso dos novos padrões ECMAScript à medida que são implementados na plataforma. Para fazer isso, você não precisa esperar até que os usuários atualizem seus navegadores, pois o Node.js é um ambiente de servidor que o desenvolvedor controla totalmente. Como resultado, novos recursos de idioma estão disponíveis quando você instala a versão de suporte do Node.js.
▍V8 motor
No coração do Node.js, entre outras soluções, está o mecanismo JavaScript de código aberto V8 do Google, usado no navegador Google Chrome e em outros navegadores. Isso significa que o Node.js usa as conquistas de milhares de engenheiros que tornaram o tempo de execução do JavaScript JavaScript incrivelmente rápido e continuam trabalhando para melhorar a V8.
▍Assincronia
Nas linguagens de programação tradicionais (C, Java, Python, PHP), todas as instruções são, por padrão, bloqueadas, a menos que o desenvolvedor cuide explicitamente da execução assíncrona do código. Como resultado, se, por exemplo, em um ambiente como esse, for feita uma solicitação de rede para carregar algum código JSON, a execução do fluxo a partir do qual a solicitação é feita será suspensa até que o recebimento e o processamento da resposta sejam concluídos.
O JavaScript simplifica bastante a gravação de código assíncrono e sem bloqueio, usando um único encadeamento, funções de retorno de chamada (retornos de chamada) e uma abordagem de desenvolvimento orientada a eventos. Sempre que precisamos executar uma operação pesada, transmitimos o mecanismo de retorno de chamada apropriado, que será chamado imediatamente após a conclusão desta operação. Como resultado, para que o programa continue funcionando, não é necessário aguardar os resultados dessas operações.
Um mecanismo semelhante surgiu nos navegadores. Não podemos esperar, digamos, pela conclusão da solicitação AJAX, sem poder responder às ações do usuário, por exemplo, clicar nos botões. Para tornar conveniente para os usuários trabalharem com páginas da Web, tudo e o download de dados da rede e o processamento de cliques nos botões devem ocorrer simultaneamente, em tempo real.
Se você já criou um botão, clique em manipulador de eventos, já usou técnicas de programação assíncronas.
Mecanismos assíncronos permitem que um único servidor Node.js. processe milhares de conexões simultaneamente, sem carregar o programador com tarefas para gerenciar fluxos e organizar a execução paralela de código. Coisas como essa geralmente são fontes de erro.
O Node.js fornece ao desenvolvedor mecanismos básicos de entrada e saída sem bloqueio e, em geral, as bibliotecas usadas na estrutura do Node.js. são gravadas usando paradigmas sem bloqueio. Isso torna o comportamento do código de bloqueio a exceção e não a norma.
Quando o Node.js precisa executar uma operação de E / S, como baixar dados da rede, acessar um banco de dados ou sistema de arquivos, em vez de bloquear o encadeamento principal que aguarda os resultados dessa operação, o Node.js inicia sua execução e continua fazendo outras coisas até até que os resultados desta operação sejam recebidos.
▍Bibliotecas
Graças à simplicidade e conveniência de trabalhar com o gerenciador de pacotes do
Node.js. chamado
npm , o ecossistema do
Node.js. está prosperando. Agora, no
registro npm, existem mais de meio milhão de pacotes de código aberto que qualquer desenvolvedor do Node.js. pode usar livremente.
Depois de examinar alguns dos principais recursos da plataforma Node.js., iremos testá-lo em ação. Vamos começar com a instalação.
Instale o Node.js
O Node.js pode ser instalado de várias maneiras, que consideraremos agora.
Portanto, pacotes de instalação oficiais para todas as principais plataformas podem ser encontrados
aqui .
Há outra maneira muito conveniente de instalar o Node.js, que é usar o gerenciador de pacotes disponível no sistema operacional. Por exemplo, o gerenciador de pacotes do macOS, que é o padrão de fato nessa área, é chamado
Homebrew . Se estiver no seu sistema, você pode instalar o Node.js executando este comando na linha de comando:
brew install node
Uma lista de gerenciadores de pacotes para outros sistemas operacionais, incluindo Linux e Windows, pode ser encontrada
aqui .
Um gerenciador de versão popular do Node.js é o
nvm . Essa ferramenta permite que você alterne convenientemente entre diferentes versões do Node.js. Com ele, é possível, por exemplo, instalar e experimentar a nova versão do Node.js. e, se necessário, retornar à antiga. Nvm também é útil em situações em que você precisa tentar algum código na versão antiga do Node.js.
Eu aconselho os iniciantes a usar os instaladores oficiais do Node.js. Para usuários do macOS, eu recomendaria instalar o Node.js usando o Homebrew. Agora que você instalou o Node.js, é hora de escrever "Olá Mundo".
O primeiro aplicativo Node.js.
O exemplo mais comum do primeiro aplicativo para Node.js é um servidor web simples. Aqui está o código dele:
const http = require('http') const hostname = '127.0.0.1' const port = 3000 const server = http.createServer((req, res) => { res.statusCode = 200 res.setHeader('Content-Type', 'text/plain') res.end('Hello World\n') }) server.listen(port, hostname, () => { console.log(`Server running at http://${hostname}:${port}/`) })
Para executar esse código, salve-o no arquivo
server.js
e execute o seguinte comando no terminal:
node server.js
Para verificar o servidor, abra um navegador e digite http:
http://127.0.0.1:3000
na barra de endereços, ou seja, o endereço do servidor que será exibido no console após o lançamento bem-sucedido. Se tudo funcionar como deveria, "Hello World" será exibido na página.
Vamos olhar para este exemplo.
Primeiro, observe que o código contém o comando
http module connect.
A plataforma Node.js. é proprietária de um maravilhoso
conjunto padrão de módulos , que inclui mecanismos bem desenvolvidos para trabalhar com a rede.
O método
createServer()
do objeto
http
cria um novo servidor HTTP e o retorna.
O servidor está configurado para escutar em uma porta específica em um determinado host. Quando o servidor está pronto, o retorno de chamada correspondente é chamado, informando que o servidor está funcionando.
Quando o servidor recebe a solicitação, o evento de
request
é gerado, o que fornece dois objetos. O primeiro é a solicitação (
req
, o objeto
http.IncomingMessage ), o segundo é a resposta (
res
, o objeto
http.ServerResponse ). Eles são os mecanismos de processamento de solicitação HTTP mais importantes.
O primeiro fornece informações sobre a solicitação à nossa disposição. Em nosso exemplo simples, não usamos esses dados, mas, se necessário, usando o objeto
req
, você pode acessar os cabeçalhos da solicitação e os dados transmitidos nele.
O segundo é necessário para formar e enviar uma resposta à solicitação.
Nesse caso, formamos a resposta à solicitação da seguinte maneira. Primeiro, defina a propriedade
statusCode
como
200
, o que indica a operação bem-sucedida:
res.statusCode = 200
Em seguida, definimos o cabeçalho
Content-Type
:
res.setHeader('Content-Type', 'text/plain')
Depois disso, concluímos a preparação da resposta adicionando seu conteúdo como argumento ao método
end()
:
res.end('Hello World\n')
Já dissemos que um ecossistema poderoso se formou em torno da plataforma Node.js. Agora discutiremos algumas estruturas populares e ferramentas auxiliares para o Node.js.
Estruturas e ferramentas auxiliares para Node.js
O Node.js é uma plataforma de baixo nível. Para simplificar o desenvolvimento e facilitar a vida dos programadores, um grande número de bibliotecas foi criado. Alguns deles se tornaram muito populares ao longo do tempo. Aqui está uma pequena lista de bibliotecas que eu acho que são excelentes e vale a pena explorar:
- Express Essa biblioteca fornece ao desenvolvedor uma ferramenta extremamente simples, porém poderosa, para criar servidores da web. A chave para o sucesso do Express foi uma abordagem minimalista e foco em mecanismos básicos de servidor, sem tentar impor uma certa visão da arquitetura de servidor "apenas correta".
- Meteor Essa é uma poderosa estrutura de pilha completa que implementa uma abordagem isomórfica para o desenvolvimento de aplicativos JavaScript e o uso de código no cliente e no servidor. Once Meteor era uma ferramenta independente que inclui tudo o que um desenvolvedor pode precisar. Agora também está integrado a bibliotecas de front-end como React , Vue e Angular . O Meteor, além de desenvolver aplicativos da Web convencionais, também pode ser usado no desenvolvimento móvel.
- Koa Essa estrutura da web foi criada pela mesma equipe que está trabalhando no Express. Durante seu desenvolvimento, baseado em anos de experiência trabalhando no Express, foi dada atenção à simplicidade da solução e à sua compacidade. Este projeto apareceu como uma solução para o problema de fazer alterações sérias no Express que são incompatíveis com outros mecanismos de estrutura que poderiam dividir a comunidade.
- Next.js. Essa estrutura foi projetada para organizar a renderização do servidor de aplicativos React .
- Micro . Esta é uma biblioteca muito compacta para criar microsserviços HTTP assíncronos.
- Socket.io . Esta é uma biblioteca para o desenvolvimento de aplicativos de rede em tempo real.
De fato, no ecossistema Node.js., você pode encontrar uma biblioteca auxiliar para resolver praticamente qualquer tarefa. Como você sabe, leva muito tempo para construir esse ecossistema. A plataforma Node.js apareceu em 2009. Durante a sua existência, muita coisa aconteceu que vale a pena conhecer para um programador que deseja aprender esta plataforma.
Uma Breve História do Node.js
O Node.js tem 9 anos este ano. Isso, é claro, não é tanto, se compararmos essa idade com a idade do JavaScript, que já tem 23 anos ou com a idade de 25 anos da Web, existente na forma em que a conhecemos, se você contar com a aparência do navegador Mosaic.
9 anos é um período curto para a tecnologia, mas agora parece que a plataforma Node.js. sempre existiu.
Comecei a trabalhar com o Node.js nas versões iniciais da plataforma, quando ela tinha apenas 2 anos de idade. Mesmo assim, apesar do fato de não haver tanta informação sobre o Node.js, já era possível sentir que o Node.js era muito sério.
Agora, vamos falar sobre as tecnologias subjacentes ao Node.js e considerar brevemente os principais eventos relacionados a esta plataforma.
Portanto, o JavaScript é uma linguagem de programação criada no Netscape como uma linguagem de script projetada para gerenciar páginas da Web no
navegador Netscape Navigator .
Parte dos negócios da Netscape vendia servidores da Web, que incluíam um ambiente chamado Netscape LiveWire. Permite criar páginas da web dinâmicas usando JavaScript do lado do servidor. Como você pode ver, a ideia de usar JS para o desenvolvimento de servidores é muito mais antiga que o Node.js. Essa ideia é quase tão antiga quanto o próprio JavaScript, mas o JS do lado do servidor não ganhou popularidade nos tempos em questão.
Um dos principais fatores pelos quais a plataforma Node.js. tornou-se tão difundida e popular é o momento de sua aparência. Portanto, alguns anos antes disso, o JavaScript começou a ser considerado uma linguagem séria. Isso aconteceu graças a aplicativos da Web 2.0, como Google Maps ou Gmail, que mostraram ao mundo os recursos das modernas tecnologias da web.
Graças à guerra competitiva entre navegadores, que continua até hoje, o desempenho dos mecanismos JavaScript aumentou seriamente. As equipes de desenvolvimento por trás dos principais navegadores estão trabalhando todos os dias para melhorar o desempenho de suas soluções, o que tem um efeito benéfico no JavaScript em geral. Um desses mecanismos é o V8 já mencionado, usado no navegador Chrome e usado no Node.js. É um dos resultados do desejo dos desenvolvedores de navegadores por código JS de alto desempenho.
Obviamente, a popularidade do Node.js se baseia não apenas em uma combinação bem-sucedida de circunstâncias e no fato de que essa plataforma apareceu no momento certo. Ela apresentou ao mundo uma abordagem inovadora para o desenvolvimento do lado do servidor em JavaScript. Considere os marcos na história do Node.js.
▍2009
- O advento do Node.js
- Crie a primeira opção npm .
▍2010
▍2011
- Saia da NPM 1.0.
- Grandes empresas como o LinkedIn e o Uber começaram a usar o Node.js.
▍2012
- O rápido aumento da popularidade do Node.js.
▍2013
- O advento do Ghost , a primeira grande plataforma de publicação usando o Node.js.
- Koa Release.
▍2014
- Eventos dramáticos ocorreram este ano. O projeto IO.js. apareceu , que é um fork do Node.js., cujo objetivo era, entre outras coisas, introduzir o suporte ao ES6 e acelerar o desenvolvimento da plataforma.
▍2015
- Fundação da Fundação Node.js.
- Mesclagem de IO.js e Node.js.
- No npm, há uma oportunidade de trabalhar com módulos privados.
- Saída do Node.js 4 (deve-se notar que esta plataforma não possui as versões 1, 2 e 3).
▍2016
- Incidente com o pacote esquerdo .
- A aparência do fio .
- Saia do Node.js 6.
▍2017
- O Npm está começando a se concentrar mais na segurança.
- Node.js de saída 8
- O advento do suporte HTTP / 2 .
- O V8 é oficialmente reconhecido como um mecanismo JS projetado não apenas para o Chrome, mas também para o Node.
- 3 bilhões de downloads a partir da NPM são realizados semanalmente.
▍2018
- Saia do Node.js 10.
- Suporte para módulos ES .
- Suporte experimental para mjs .
Sumário
Hoje você se familiarizou com a plataforma Node.js., descobriu sua instalação, escreveu e testou o primeiro aplicativo simples. Da próxima vez, falaremos sobre o conhecimento de JavaScript que você precisa desenvolver com sucesso para o Node.js., como o código JS do navegador e do servidor é diferente e discutiremos alguns dos truques de desenvolvimento do Node.js.
Caros leitores! Diga-me, você começou o Hello World para Node.js?
As seguintes partes do manual:
Parte 1:
Informações gerais e introduçãoParte 2:
JavaScript, V8, alguns truques de desenvolvimentoParte 3:
Hospedagem, REPL, trabalho com o console, módulosParte 4:
arquivos npm, package.json e package-lock.jsonParte 5:
npm e npxParte 6:
loop de eventos, pilha de chamadas, temporizadoresParte 7:
Programação assíncrona