O que é Node.js?
Tags: node, javascript
Published: 2019-09-27 12:32:53

---
title: O que é Node.js?
published: true
tags: nodejs,javascript
canonical_url: https://medium.com/alex-ribeiro/o-que-e-nodejs-bc0066b3bfe2
---

![](https://cdn-images-1.medium.com/max/1024/1*-Nq1fQSPq9aeoWxn4WFbhg.png)<figcaption>Imagem por <a href="https://medium.com/u/96cd9a1fb56">Node.js Foundation</a></figcaption>

[**Node.js**](https://nodejs.org/) é um runtime de JavaScript, criado por [**Ryan Dahl**](https://en.wikipedia.org/wiki/Ryan_Dahl) em 2009. Foi desenvolvido em cima do motor **JavaScript V8**  — engine criada pelo Google e utilizado no Chrome e Chromium — , que leva o processamento e renderização do JavaScript para o lado do servidor.

Node.js usa um modelo de **I/O não bloqueante** orientada a evento que o torna leve e eficiente, que possibilita criar aplicações rápidas, escaláveis e estáveis. Desde seu surgimento, vem ganhando crescente espaço entre profissionais de tecnologia do Brasil e do mundo.

Já pensou, poder utilizar **javascript no back-end** , com a mesma segurança proporcionada por linguagens como **PHP** e **ASP.NET**?!

![](https://media.giphy.com/media/YhAJHW59JfsNW/giphy.gif)

Para quem já tem certa experiência com desenvolvimento web (certamente conhece a limitação de uso do **Javascript no front-end** ) nunca iria imaginar essa possibilidade.

Agora estamos em uma era diferente, onde praticamente todas as grandes limitações do Javascript não existem mais. A cada dia infinitas possibilidades surgem e diversas referências vem aderindo a esse avanço.

### Por que (e quando) utilizar Node.js?

Vou listar pontos cruciais, alguns já mencionados anteriormente, que irão te esclarecer o porquê de utilizar o Node.js:

- **Assíncrono** ;
- **I/O sem bloqueios** ;
- **Alta performance** ;
- **Escalabilidade fácil e barata** ;
- **Loop de eventos**.

Um detalhe que toma a dianteira em relação aos concorrentes é o **loop de eventos**. Irei explicar melhor como isso funciona.

Geralmente, um jeito “tradicional” de lidar com muitas requisições é criando múltiplas threads, ou seja, para cada requisição é criada uma thread. Nela é tratada a requisição e somente após o retorno deste tratamento a thread é finalizada. Porém, muito recurso é gasto nesse processo e muitas vezes de forma desnecessária, já que nem sempre todo aquele recurso reservado é utilizado e a thread fica “estacionada” enquanto o tratamento não estiver concluído.

> Quando uso o termo “tratamento” me refiro a qualquer processo feito antes de devolver uma resposta, seja uma consulta no banco, verificação de arquivo, cálculo…

Já o Node.js, trata toda e qualquer requisição em uma única thread.

> Aí você me pergunta: Então como é possível ele ser tão performático?

Quando ele recebe uma requisição, ao invés de esperar o resultado do tratamento desta, ele segue com a próxima requisição e assim por diante, como uma fila. Quando alguma requisição em espera tiver seu tratamento finalizado, é sinalizado um evento que a retornará o quanto antes.

Isso quer dizer que, com o Node.js, temos um ganho muito grande de número de requisições que podem ser processadas.

Node.js não é apenas um servidor, já que hoje em dia pode ser utilizado para criar até mesmo aplicações desktop. Também é ótimo para realizar diversos tipos de projetos, como:

- APIs (principal uso);
- Aplicações web real-time como servidores de chat ou aplicações colaborativas entre múltiplos usuários (socket);
- Jogos multiplayer;
- Aplicações que demandam alta escalabilidade;
- Servidores de streaming de dados;

### Quando não utilizar?

Por usar somente uma thread, ele não serve para lidar com algoritmos complexos que consumam muita CPU, como edição de imagens, por exemplo. Isso impediria a execução de outras ações até o processamento estar completo.

### Quem já utiliza?

> Então quer dizer que não é só uma “modinha”?

Aqui vai uma lista de empresas conhecidas que utilização esta linda tecnologia:

- **Walmart;**
- **PayPal;**
- **Groupon;**
- **Netflix;**
- **LinkedIn** ;
- **New York Times;**
- **Flickr** ;
- **Mozilla** ;
- **Yahoo.**

#### Obrigado e até mais!

Esta é minha primeira postagem. Se você gostou do meu texto, me acompanhe e terá mais informações em breve.

Quer saber mais sobre o assunto ou tem alguma dúvida? Deixe um comentário. Ah, estou aberto a críticas também.

* * *