Conhecendo os Módulos no NodeJS

Conhecendo os Módulos no NodeJS

Um dos assuntos mais importantes do mundo do NodeJS, são os módulos, pois é por meio deles que a nossa aplicação ganha vida, deixando de ser meras aplicações em Javascript, passando para algo mais robusto e interativo.

É por meio deles que você consegue organizar seus códigos de forma modular e reutilizável, facilitando assim a manutenção e o desenvolvimento de uma aplicação escalável.

Também será por meio dos módulos que você vai gerenciar as dependências do seu projeto (códigos de terceiros) diretamente na sua aplicação.

Durante a Introdução ao NodeJS, eu falei um pouco sobre o funcionamento dos módulos, fornecendo exemplos do mundo real para que você pudesse entende-los da melhor forma possível.

No momento, nós iremos aprender um pouco mais sobre a parte teórica dos módulos e o funcionamento deles.

Mas talvez, nessa altura do campeonato você esteja se perguntando:

É possível criar aplicações em NodeJS, sem fazer o uso de módulos?

Sim, é possível, entretanto, se você optar por criar aplicações em NodeJS sem fazer o uso de módulos, é muito provável que enfrente diversos desafios...

Seu código ficará monolítico: Imagina um programa inteiro escrito dentro de um único arquivo chamado de index.js, dependendo do tamanho do programa, isso pode parecer loucura 😵‍💫

Aplicações monolíticas dificultam a manutenção do código e principalmente o entendimento do mesmo.

Seu escopo global ficará extremamente poluído: Além da grande confusão de possuir diversos códigos misturados, a probabilidade do seu código entrar em conflito é muito maior.

Seu código não podera ser reutilizádo: se os módulos podem ser considerados como pecinhas de um quebra cabeça maior, sem eles, não podemos reutilizar nossa lógica em outras partes do projeto, ou quem sabe até mesmo em outros projetos.

De resto, você já sabe que criar aplicações em NodeJS sem o uso de módulos é totalmente furada, e vai totalmente contra os princípios desse ambiente de desenvolvimento, visto que ele foi pensado para ser trabalhado como uso de MÓDULOS!

O que são módulos?

Módulos nada mais são do que códigos que realizam tarefas específicas, ao mesmo tempo que podem ser reaproveitados durante outras partes do código, ou por futuros projetos que você criar.

Por exemplo, você conhecerá módulos que são capazes de abrir um navegador web por de baixos dos panos.

Módulos capazes de construir aplicações web e APIs, módulos que fazem conexão com banco de dados (Postgres, SQL, MongoDB), módulos capazes de se conectar com gateways de pagamento, módulos capazes de processar vídeos, módulos capazes de processar requisições HTTP, módulos capazes de manipular arquivos, e muito outros módulos.

Onde cada um desses módulos são oferecidos de forma gratuita pela comunidade de desenvolvedores, de modo que você possa reutiliza-los em diversos outros projetos diferentes.

Existem também os módulos mais simples, como módulos de conversor de dados numéricos, módulos de console, módulos de operações matemáticas e afins.

Pense nos módulos como partes de um quebra cabeça, ou bloquinhos de Lego:

Existem módulos menores que executam operações mais simples, também como módulos maiores que executam operações mais complexas.

Os módulos no mundo do NodeJS, podem ser separados em três grandes categorias:

  • Módulos Internos (Core Modules)
  • Módulos Externos
  • Módulos Próprios

Conheceremos cada um deles a seguir 😋

Módulos Internos (Core Modules)

Como o próprio nome já nos diz, Módulos Internos ou Core Modules são módulos incorporados diretamente no ambiente NodeJS.

Quando me refiro ao termo "incorporado", estou querendo dizer que são módulos que foram criados e disponibilizados pelos próprios desenvolvedores do NodeJS, estando disponíveis sem precisar de instalação adicional.

Sabe aqueles programas como: Paint, Ferramenta de Captura, Relógio, Calculadora, Bloco de Notas, Prompt de Comando e entre outras ferramentas que já vem instaladas com o Windows?

Então, esses programas nada mais são do que módulos internos (programas internos) que já vem instalado com o sistema operacional, com o intuito de fornecer funcionalidades essenciais para que nós desenvolvedores, possamos lidar com varias tarefas, como por exemplo:

  • criptografia,
  • manipulação de arquivos,
  • tratamento de eventos,
  • manipulação de rede,
  • operações com o sistema operacional,
  • e muitas outras.

Isso significa dizer que o NodeJS trás novas funcionalidades ao Javascript além daquelas que aprendemos nessa jornada.

Ao trazer o Javascript para ser executado do lado do servidor, o NodeJS introduziu novas funcionalidades que até então o Javascript era impedido de fazer do lado do cliente por questões de segurança, como a principal delas a manipulação de arquivos.

E como o ECMAScript lida com essas modificações do NodeJS?

No caso do ECMAScript, por si só, ele não se preocupa com um determinado ambiente de execução específico (Client-Side ou Server-Side).

Ele se preocupa apenas em fornecer as regras básicas da linguagem, incluindo sintaxe, tipos de dados, operadores e outras características essenciais do Javascript.

Sendo assim, quando você está escrevendo códigos para o NodeJS, você automaticamente está fazendo o uso das regras do ECMAScript para definir a lógica da linguagem - até porque a sintaxe do Javascript não muda -, mas também aproveitando as funcionalidades específicas oferecidas pelo NodeJS, que só exitem nesse ambiente 😉

Módulos Externos

Quando falamos de módulos externos, estamos falando dos pacotes (scripts e bibliotecas) criados por terceiros, e que não são considerados pacotes nativos (módulos internos) do NodeJS.

São aqueles pacotes criados por outros desenvolvedores (e empresas) que detém a habilidade de criar módulos, o que não é uma tarefa muito dificil.

Esses módulos podem ser facilmente integrados ao seu projeto usando o npm (Node Package Manager).

Mais tarde veremos o funcionamento desses pacotes 😉

Módulos Próprios

Também existem os módulos próprios, que nada mais são do que módulos que nós desenvolvemos durante a criação de um projeto.

Assim como as classes e funções específicas que vamos criando durante a jornada de desenvolvimento de uma aplicação.

Esses módulos não são considerados como módulos internos, pois somos nós que criamos, e nem como módulos externos, pois criamos eles sem o objetivo de compartilha-los com a comunidade, sendo considerados módulos próprios mesmo rs

Conclusão

Nesta lição você aprendeu um pouco da parte teórica sobre o que são módulos, e suas três categorias principais (módulos internos, módulos externos e módulos próprios).

Na próxima lição, vamos aprender um pouco mais sobre módulos internos colocando também a mão na massa 😎