sexta-feira, 15 de abril de 2016

Módulos em Node.js

Por questões de manutenibilidade, separação de responsabilidades, reaproveitamento de código, etc, é importante que nossas aplicações, principalmente aquelas de grande porte, sejam separadas em módulos.
Em Node.js, cada módulo é criado em seu respectivo arquivo JavaScript.

Para utilizarmos um módulo em nossa aplicação, utilizamos a função require, passando como parâmetro o nome ou caminho do módulo (não é necessário informar a extensão js).

O Node.js já vem com vários módulos para que possamos utilizar, os Core Modules, como o módulo http por exemplo.
Para importação deste módulos, informamos para a função require apenas o nome do módulo e a mesma saberá onde encontrá-lo, por exemplo: require('http').

Além dos Core Modules, existem também os módulos criados por terceiros, que podemos instalar através do NPM (Node Package Manager) utilizando o comando npm install nome_modulo.
Estes módulos são instalados em uma pasta chamada node_modules que é criada na pasta de nosso projeto no momento da instalação destes módulos. Para carregá-los, informamos apenas seu nome para a função require (sem o caminho) que a mesma saberá onde encontrá-los.

No entanto, também temos a possibilidade de criar nossos próprios módulos de acordo com nossas necessidades. Suponhamos que temos um arquivo chamado app.js com o seguinte código:
var meuModulo = require('./meuModulo'); 
meuModulo.foo(5, 5);

 O "./" indica para a função require buscar pelo modulo, que está no arquivo meuModulo.js, no mesmo diretório onde o arquivo app.js se encontra.

O arquivo meuModulo.js, contém o seguinte código:

var x = 10; 

var o = { 

        foo: function(a, b) {
             console.log((a + b) * x); 
       } 
}; 

 module.exports = o;


Neste caso, estamos exportando o objeto o, a variável x não será acessível fora do nosso módulo, portanto ela é privada a ele.

O objeto module.exports é local ao nosso módulo. E é este objeto que é retornado pela função require.

Espero que este post tenha sido útil.
Abraço.

Nenhum comentário:

Postar um comentário