Introdução ao Node.js
Tags: beginners, webdev, node, braziliandevs
Published: 2022-03-11 21:09:40

## Tabela de Conteúdos

- [Node](#node)
- [Módulos](#módulos)
- [Usando Módulos](#usando-módulos)
- [NPM](#npm)
- [Links Úteis](#links-úteis)

---

## Node

### O que é?

É um interpretador JavaScript baseado na engine V8 do Google Chrome. Diferente da engine do Chrome, o Node não vem com métodos para manipulação do DOM e ao invés disso possui métodos que permitem acessar o sistema e a rede mais diretamente, afinal ele foi feito para rodar fora do navegador.

### O que faz?

Permite a utilização de JS em outros ambientes fora do navegador, o que é um grande avanço, afinal durante um bom tempo o JS rodava somente nos navegadores.

<br />

<small>[Voltar ao topo](#tabela-de-conteúdos)</small>

___

## Módulos

### O que são?

São pacotes de códigos que podem ser organizados em um ou mais arquivos e que possuem escopo próprio.

### O que fazem?

Os módulos permitem o compartilhamento de código dentro da aplicação, esse código em questão pode ser nativo do Node, criado por nós ou até mesmo de terceiros.

### Tipos

Existem três tipos de módulos no Node: internos, locais e de terceiros

#### Internos

Módulos internos são aqueles nativos do Node, ou seja, assim que o baixamos temos esses módulos disponíveis. Alguns deles são: `fs`, `url`, `querystring`, `util` e `os`.

#### Locais

Módulos locais são criados por nós durante o desenvolvimento de um projeto, dessa forma podemos reutilizar o código em diversos arquivos diferentes, bem como reutilizar em outro projeto.

#### Terceiros

Módulos de terceiros são pacotes criados e publicados pela comunidade e por via de regra são disponibilizados no site oficial de pacotes do Node, o [NPM](https://www.npmjs.com).

<br />

<small>[Voltar ao topo](#tabela-de-conteúdos)</small>

___

## Usando Módulos

### Exportando

Como dito em sua definição, módulos são pacotes de código com escopo próprio, logo para podermos utilizar a lógica desenvolvida dentro desses pacotes precisamos exportá-los.

#### Sintaxe

Para exportarmos um pacote utilizamos uma sintaxe muito simples, chamamos o método global `module.exports` e atribuímos a ele o valor a ser exportado. Frisando que, caso desejemos __exportar mais de um valor__, precisamos utilizar alguma __estrutura de dados como Objetos ou Arrays__.

``` javascript
module.exports = 10;
```
``` javascript
module.exports = {
    brl: 5.37,
    usdToBrl: (usdValue) => usdValue * 5.37,
};
```

### Importando

Agora que exportamos valores de seus arquivos, precisamos importá-los para que possamos utilizá-los. Lembrando que podemos importar não somente módulos criados e exportados por nós, como também módulos nativos e de terceiros.

### Sintaxe

A sintaxe de importação é tão simples quanto a de exportação, precisamos somente chamar a função global `require()`, passando o _path_ relativo até o módulo que desejamos, isso caso esse módulo tenha sido criado e exportado por nós. Agora se o módulo for nativo ou de  terceiros, tudo que precisamos fazer é passar o nome do módulo no lugar do _path_.

``` javascript
const myModule = require('./myModule.js');
```
``` javascript
const fs = require('fs');  // módulo nativo
```

<br />

<small>[Voltar ao topo](#tabela-de-conteúdos)</small>

___

## NPM

### O que é?

É a sigla para __Node Package Manager__, o repositório oficial para a publicação de pacotes Node. Além disso, também existe a ferramenta CLI do npm, com ela podemos gerenciar os pacotes de nossa aplicação e suas dependências.

### O que faz?

O NPM é o repositório oficial para a publicação de pacotes Node, logo ele funciona como um grande _"armazém"_ para os pacotes, os disponibilizando para outras pessoas desenvolvedoras.

Já a ferramenta CLI do NPM auxilia no gerenciamento dos pacotes, sejam eles próprios ou de terceiros, dessa forma realizar a instalação e desinstalação, por exemplo, fica muito simples.

### Comandos

Utilizamos a CLI do NPM através de comandos, existem diversos comandos que podemos utilizar, porém os principais são:

#### `npm init`

Inicia um pacote Node na pasta onde o comando foi executado, gerando um arquivo package.json com as informações do pacote.

#### `npm run`

Executa um script previamente definido no arquivo package.json.

#### `npm start`

Executa o script específico de start, _normalmente vinculado a inicialização do projeto_.

#### `npm install`

Instala as dependências especificadas previamente no arquivo package.json, ou alguma dependência definida por nós através da linha de comando.

<br />

<small>[Voltar ao topo](#tabela-de-conteúdos)</small>

---

## Links Úteis

- [MDN - Documentação JavaScript](https://developer.mozilla.org/en-US/docs/Web/JavaScript)
- [W3Schools - Documentação JavaScript](https://www.w3schools.com/jsref/default.asp)
- [OverAPI - Node.js Cheat Sheet](https://overapi.com/nodejs)
- [Node.js - Documentação Oficial](https://nodejs.org/dist/latest-v16.x/docs/api/)

<br />

<small>[Voltar ao topo](#tabela-de-conteúdos)</small>