Curso Node.JS Essencial 🧰
Tags: node, javascript, webdev, tutorial
Published: 2022-04-25 04:52:43

## Introdução
Node.JS é uma ferramenta amplamente utilizada no universo de desenvolvimento e todos que atuam na área de tecnologia já ouviram falar, nem que seja nos milhares de anúncios de cursos ou mesmo de vagas. Mas você se pergunta: afinal, o que é Node.js? 


## Node.JS e JavaScript
JavaScript é uma linguagem de programação que originalmente foi desenvolvida para trazer maior interatividade aos websites através da manipulação do DOM (Document Object Model). Vamos conferir a definição do livro que é uma referência na temática, o Eloquent JavaScript:

> O JavaScript foi introduzido em 1995 como uma forma de adicionar dinamicidade à páginas da web no navegador Netscape Navigator. Desde então, a linguagem foi adotada por todos os outros principais navegadores gráficos da web. Ela tornou possíveis o desenvolvimento das aplicações modernas da web - aplicações com os quais você pode interagir diretamente sem recarregar a página a cada ação. JavaScript também é usado em sites mais tradicionais para fornecer várias formas de interatividade de forma mais inteligente.

Portanto, de forma resumida, podemos entender que o JavaScript foi pensado para ser rápido, dinâmico e acessível. A linguagem interpretada possibilita subir ou trabalhar em suas aplicações sem precisar configurar todo um ambiente complexo.

Essas características motivaram o engenheiro de software Ryan Dahl a desenvolver um ambiente, como um programa que você instala no seu computador, que trabalha com a linguagem JavaScript fora do navegador e pelo lado do servidor, via terminal, de uma maneira menos restritiva. Para quem já trabalhou com servidores IIS ou servidores PHP, este assunto não é complexo. Mas, para quem é iniciante muitos paradigmas aqui podem ser bem complexos.

**Recomendo então que estude o básico do Javascript no mínimo para poder seguir esta trilha. É esperado que você tenha conhecimentos mais sólidos em programação Javascript (pelo menos o básico) e é desejável também, conhecimento em HTML e CSS. Um total iniciante não tendo nutrido seu conhecimento da base da web e seus protocolos ficaria deslocado e não teria um bom proveito.**

Então, vamos lá!


## Node.JS
O JavaScript nasceu para atender demandas voltadas ao Front e como as necessidades aumentam de acordo com o crescimento tecnológico, surgiu a ideia de utilizar uma mesma linguagem no lado do cliente e do servidor para otimizar processos e serviços. Dessa forma, o Node.JS aparece como uma alternativa viável para programação Back-End por se tratar de um ambiente para desenvolvimento utilizando a linguagem JavaScript.

De acordo com sua definição oficial, o Node é um runtime, que nada mais é do que um conjunto de códigos, API’s, ou seja, são bibliotecas responsáveis pelo tempo de execução (é o que faz o seu programa rodar) que funciona como um interpretador de JavaScript fora do ambiente do navegador web.

É importante frisar que o Node.JS é um ambiente de execução assíncrono, isto é, ele trabalha de modo a não bloquear no momento da execução da aplicação, delegando os processos demorados a um segundo plano.

Ele dá muito certo com os servidores de arquitetura “single threaded”, isto significa que todos os pedidos para o servidor são executados no mesmo tópico - em vez de serem gerados em processos separados. Um dos grandes diferenciais da parceria Node.JS e Javascript é o bom desempenho no uso de APIs, já que o Javascript faz bastante uso de APIs assíncronas.

Você deve estar se perguntando: “Beleza, já entendi o que é o Node.JS e seu diferencial quando o assunto é o seu uso com o Javascript, mas o que isso significa?” Vamos entender um pouco mais... vem comigo, que te explico...


## Como o Node.JS funciona?
O Node é capaz de interpretar um código JavaScript, igual ao que o navegador faz. Sendo assim, quando o navegador recebe um comando em JavaScript, ele o interpreta e depois executa as instruções fornecidas.

O Node é fantástico porque torna possível o envio de instruções (os nossos códigos) sem precisar de um navegador ativo, basta ter o Node.JS instalado e utilizar o terminal para executar um programa construído em JavaScript. Algo bem parecido com o que o pessoal que programa em Python também tem ao usar sua IDLE, mas, neste caso estamos falando de Javascript.

Além disso, você pode utilizar apenas uma linguagem de programação para tratar requisições entre cliente e servidor. 
Sensacional, não é?!

Para que todo esse processo seja possível de ocorrer fora do navegador, o Node utiliza uma outra ferramenta chamada de Chrome's V8 JavaScript Engine. É esse motor V8 do Chrome que compila e executa o código JavaScript no lugar de apenas interpretá-lo.

Ainda parece muito confuso? Vem comigo que te explico melhor…

O motor V8 da Google é o centro, o coração que processa todo o código JavaScript do navegador para que sua máquina compreenda e disponibilize os recursos e interações. Só é possível visualizar páginas em JavaScript ou trabalhar com um código pelo Node.JS devido ao processamento do motor V8 do Chrome.


## Diferenças básicas
Uma tarefa comum para um servidor web pode ser abrir um arquivo no servidor e devolver o conteúdo ao cliente. Aqui está como o PHP ou ASP lida com uma solicitação de arquivo:

- Envia a tarefa para o sistema de arquivos do computador.
- Aguarda enquanto o sistema de arquivos abre e lê o arquivo.
- Retorna o conteúdo para o cliente.
- Pronto para lidar com a próxima solicitação.

Veja como o Node.js lida com uma solicitação de arquivo:

- Envia a tarefa para o sistema de arquivos do computador.
- Pronto para lidar com a próxima solicitação.
- Quando o sistema de arquivos abrir e ler o arquivo, o servidor retornará o conteúdo ao cliente.

O Node.js elimina a espera e simplesmente continua com a próxima solicitação. O Node.js executa programação assíncrona de thread único, sem bloqueio, que é muito eficiente em termos de memória.


## O que o Node.js pode fazer?

- Node.js pode gerar conteúdo de página dinâmico;
- O Node.js pode criar, abrir, ler, gravar, excluir e fechar arquivos no servidor;
- Node.js pode coletar dados de formulário;
- Node.js pode adicionar, excluir, modificar dados em seu banco de dados.

## O que é um arquivo Node.js?

- Os arquivos Node.js contêm tarefas que serão executadas em determinados eventos;
- Um evento típico é alguém tentando acessar uma porta no servidor;
- Os arquivos Node.js devem ser iniciados no servidor antes de terem qualquer efeito;
- Os arquivos Node.js têm extensão ".js".


## Características do Node.JS
Node.JS pode ser utilizado nas famosas APIS Rest, web scrapping, chatbots, IoT, web servers, aplicações Desktop, tudo devido a sua característica altamente versátil. Dentre as principais, podemos citar:

- **Multiplataforma:** permite criar desde aplicativos desktop, aplicativos móveis e até sites SaaS;

- **Multi-paradigma:** é possível programar em diferentes paradigmas, como: Orientado a Objetos, funcional, imperativo e dirigido à eventos;

- **Multi-plataforma:** O Node.js é executado em várias plataformas (Windows, Linux, Unix, Mac OS X, etc.);

- **Open Source:** é uma plataforma de código aberto, isso significa que você pode ter acesso ao código fonte do Node.JS e realizar suas próprias customizações ou mesmo contribuir para a comunidade de forma direta.;

- **Escalável:** Node.JS foi criado para construir aplicações web escaláveis, como podemos ver na sua [documentação oficial](https://nodejs.org/en/docs/guides/).


O Node.JS ainda apresenta uma curva de aprendizado relativamente menor comparado à outras linguagens voltadas ao Back-End e possui uma comunidade gigante disposta a ajudar. E sem dúvida a união dessas forças é o super poder do Node.JS!

Agora que você já sabe tudo sobre Node.JS, vamos começar uma jornada rumo ao conhecimento e um curso com o essencial sobre esta tecnologia incrível.

Vamos começar?

**[Clique aqui para iniciar a instalação do Node.JS](https://dev.to/fraconca/instalando-o-nodejs-1ie8)!**