NodeJS Primeiros Passos: Módulo em NodeJS

MODULO EM NODEJS

O que é Módulo em NodeJS?

É um script php no qual você consegue incluir em um outro script. É uma maneira bem tradicional de se organizar as partes funcionais do código.

Vamos fazer um teste simples apenas para testar o require, que é a forma de importar esse módulo.

Crie um novo arquivo no Node e coloque um nome qualquer, o meu será modulo01.js, esse arquivo será meu módulo, dentro dele terá:

 

Salve e crie um novo arquivo chamado app.js. Nele vamos fazer o seguinte:

 

Ao executar o app.js, o require chama o modulo01 e apresenta a frase do nosso arquivo modulo01.js

O interessante nessa forma de gerir os módulos no node é que seria como se ele estivesse em uma closer como uma self invoking, porque ele isola o nosso escopo inteiro.

Para fazermos uma funcionalidade um pouco melhor, podemos falar para esse módulo exportar, por exemplo, um contar:

 

Com isso estamos expondo um pedaço do nosso módulo para o que está externo, criando uma pequena interface chamada contar

Quando fizermos o require do módulo no app.js, podemos atribuir ele a uma variável:

 

Assim o m1 recebe uma self invoking e conseguimos ter acesso ao contar que expomos para o que está externo.

Um exemplo que podemos fazer é o seguinte:

 

 

O require só é executado uma vez. Mesmo sendo executado duas vezes, a primeira vez que ele executar a self invoking function vai ser mantida.

Esse comportamento é semelhante ao singleton do java e c#, por exemplo.

Vamos criar um novo arquivo modulo02 e um app02, no módulo 2 terá um exemplo um pouco diferente, ao invés de deixar ele criar o escopo como quiser, eu vou criar o modulo02 dentro de uma variável e criar minha própria function, ou seja, vou criar um escopo só para esse módulo:

 

Essa variável contador é semelhante a um atributo da classe de forma privada, ou seja, não está disponível de forma global, com isso podemos ‘explicitar’ uma interface que queremos que todos os outros enxerguem, retornando um objeto com duas funções. A primeira vai só incrementar, a segunda function só escreve e finalmente vamos expor o nosso módulo todo para o ‘mundo’.

Agora, indo para o app02.js, faremos o seguinte:

 

Se fizermos apenas isso, perceba que a function será retornada mas não vai executar a função, então temos que passar o valor inicial que eu quero:

Fazendo isso, isolamos os 2 módulos através de uma closer, que é muito semelhante a uma classe. Teríamos atributos, métodos públicos e métodos privados, pois como eu não exponho ele, então seria visível em um mesmo escopo.

Isso seria um constructor porque ele consegue definir os valores iniciais e seria executado quando instanciamos o módulo. Essa é uma das maneiras que temos de organizar módulos, vamos falar mais sobre isso posteriormente.

Confira a explicação completa em vídeo:

Curta o DevPleno no Facebook, inscreva-se no canal e não se esqueça de cadastrar seu e-mail para não perder as novidades. Abraço!