O que é realmente o Node.js?



O Node.js é um tempo de execução JavaScript. O que isso significa e como funciona?
O ambiente Node.js inclui tudo o que você precisa para executar um programa escrito em JavaScript.

Anteriormente, era possível executar o JavaScript apenas em um navegador, mas depois que os desenvolvedores o expandiam, agora você pode executar o JS no seu computador como um aplicativo independente. Então havia Node.js.

Agora você pode fazer muito mais com JavaScript do que apenas sites interativos.

O JavaScript agora tem a capacidade de fazer o que outras linguagens de programação de script, como Python, podem fazer.

JavaScript e Node.js baseados em navegador são executados no tempo de execução da V8. Esse mecanismo usa seu código JS e o converte em código de máquina mais rápido. Código de máquina é um código de baixo nível que um computador pode executar sem ter que interpretá-lo primeiro.

Por que Node.js?


Aqui está a definição formal dada no site oficial do Node.js.
- Node.js - tempo de execução do JavaScript baseado no mecanismo JavaScript V8 do Chrome.
- O Node.js usa um modelo de E / S sem bloqueio, orientado a eventos, que o torna fácil e eficiente.
- O ecossistema de pacotes Node.js., npm, é o maior ecossistema de bibliotecas de código aberto do mundo.

Já discutimos a primeira linha desta definição: "O Node.js é um tempo de execução JavaScript baseado no mecanismo JavaScript V8 do Chrome". Agora, vejamos as outras duas linhas, para que possamos entender por que o Node.js é tão popular.

E / S significa entrada / saída. Pode ser qualquer coisa: da leitura / gravação de arquivos locais a uma solicitação HTTP na API. A E / S leva tempo e, portanto, bloqueia outras funções.

Considere um cenário em que solicitamos usuário1 e usuário2 do back-end e, em seguida, imprima-os na tela / no console. A resposta a essa solicitação leva tempo, mas as duas solicitações de dados do usuário podem ser executadas independentemente e ao mesmo tempo.



Bloqueio de entrada e saída


No método de bloqueio, a solicitação de dados do usuário2 não é acionada até que os dados do usuário1 sejam impressos na tela.

Se fosse um servidor web, precisaríamos iniciar um novo thread para cada novo usuário. Mas o JavaScript é de thread único (mas possui um loop de evento de thread único, sobre o qual falaremos mais adiante). Portanto, isso tornará o JavaScript não muito adequado para tarefas multithread.

E / S sem bloqueio


Por outro lado, usando uma solicitação sem bloqueio, você pode iniciar uma solicitação de dados para o usuário2 sem aguardar uma resposta à solicitação do usuário1. Você pode iniciar os dois pedidos em paralelo.

A E / S sem bloqueio elimina a necessidade de multithreading porque o servidor pode lidar com várias solicitações ao mesmo tempo.

Loop de evento JavaScript


Se você tiver 26 minutos, confira a excelente explicação em vídeo Node Event Loop:



Caso contrário, eis uma explicação passo a passo de como o Loop de Eventos funciona em JavaScript:



1. Envie main () para a pilha de chamadas.

2. Envie console.log () para a pilha de chamadas. Começa imediatamente e aparece.

3. Envie setTimeout (2000) para a pilha. setTimeout (2000) é a API do Nó. Quando chamamos, registramos um par de eventos de retorno de chamada. O evento aguardará 2.000 milissegundos e chamará um retorno de chamada.

4. Após o registro, setTimeout (2000) aparece na pilha de chamadas.

5. Agora, o segundo setTimeout (0) é registrado da mesma maneira. Agora temos duas APIs de nó aguardando execução.

6. Depois de esperar 0 segundos, setTimeout (0) move-se para a fila de retorno de chamada, e o mesmo ocorre com setTimeout (2000).

7. Na fila de execução de retorno de chamada, as funções esperam que a pilha de chamadas fique vazia, porque apenas uma função pode ser executada por vez. Isso fornece um loop de eventos.

8. O último console.log () é chamado e main () é chamado da pilha de chamadas.

9. O loop de eventos vê que a pilha de chamadas está vazia, mas a fila de retorno de chamada não. Assim, move retornos de chamada (em ordem) para a pilha de chamadas a ser executada.

Npm



Essas são bibliotecas criadas pela comunidade. Eles resolverão os problemas mais comuns. O npm (Node Package Manager) contém pacotes que você pode usar em seus aplicativos para tornar seu desenvolvimento mais rápido e eficiente.

Exigir


Exigir tem três funções:

Carrega os módulos fornecidos com o Node.js., por exemplo, do sistema de arquivos ou HTTP, da API do Node.js.
Carrega bibliotecas de terceiros, como Express e Mongoose, instaladas a partir do npm.
Permite criar seus próprios arquivos e dividir o projeto em módulos.
Exigir é uma função e usa um parâmetro de caminho e retorna module.exports.

Módulos de nó


Módulos de nó são blocos de código reutilizáveis ​​cuja existência não afeta acidentalmente outro código.

Você pode escrever seus próprios módulos e usá-los em vários aplicativos. O Node.js possui um conjunto de módulos internos que você pode usar sem instalação especial.

V8 acelera o JavaScript usando C ++


V8 é um mecanismo de código aberto escrito em C ++.

JavaScript -> V8 (C ++) -> código de máquina

A V8 implementa o ECMAScript conforme especificado em ECMA-262. O ECMAScript foi criado pela Ecma International para padronizar o JavaScript.

O V8 pode funcionar de forma autônoma ou pode ser integrado a qualquer aplicativo C ++. Graças a isso, você pode escrever seu próprio código C ++ e disponibilizá-lo para JavaScript.

Eventos


Eventos são tudo o que aconteceu em nosso aplicativo e o que podemos responder.

O nó possui dois tipos de eventos:

  • Eventos do sistema: kernel C ++ da biblioteca libuv. (Por exemplo, terminando a leitura de um arquivo).
  • Eventos personalizados: núcleo do JavaScript.


Escrevendo Hello World no Node.js


Porque não

Crie o arquivo app.js e adicione o seguinte.

console.log ("Hello World!");

Abra um terminal Nó, altere o diretório para a pasta na qual o arquivo está salvo e execute o nó app.js.

Voila - você acabou de escrever "Hello World" no Node.js.

muitos recursos que você pode usar para aprender mais sobre o Node.js, incluindo o freeCodeCamp.org.

Source: https://habr.com/ru/post/pt420123/


All Articles