Olá pessoal. Tudo certo?!
Este é o segundo post de uma série onde pretendo apresentar os fundamentos do desenvolvimento usando node.js.
No primeiro post, mostrei como obter, instalar e dar os primeiros passos com essa tecnologia. Em outro post, explorei o potencial do node.js para criação de aplicações de propósito geral (não servidor/serviços web) escrevendo um utilitário para execução de testes escritos em QUnit fora do browser. Agora, apresento um aspecto importante no desenvolvimento com node.js: modules.
O que são módulos?
Módulos são “blocos de montar” para aplicações node.js. Cada arquivo Javascript que usamos no node.js é um módulo.
Nos primeiro post, escrevemos o seguinte código para carregar o módulo http:
var http = require("http");
A função require procura e carrega módulos.
Criando um módulo simples
Para tornar o conceito mais compreensível, comecemos com um exemplo simples. Considere um arquivo chamado simple_module.js com o seguinte conteúdo:
var count = 0; exports.next = function() { return count ++; };
Agora, considere que executemos o node na pasta onde o arquivo está salvo.
Para entender:
- o objeto retornado pela função require é o objeto “exports” (isso é um padrão no node.js);
- cada chamada para s.next chama a função next definida em simple_module;
Qualquer função/objeto associada ao objeto exports é “exportada” do módulo.
Node built-in modules
A implementação de “módulos” no node.js é fortemente influenciada pela definição presente no CommonJS.
Node.js fornce um conjunto rico de módulos prontos, embutidos no sistema, que agilizam muito o desenvolvimento.
No node.js, os módulos são armazenados em arquivos reais.
Identificando módulos
De forma geral, o nome de um módulo é o “path” para o arquivo correspondente. No exemplo que utilizamos acima, a seguinte linha para carregar o módulo definido no arquivo simple_module.js;
s = require("./simple_module");
Node.js assume que arquivos não identificados por uma extensão são, por default, arquivos .js (javascript). Entretanto, é importante ressaltar que o node.js suporta também arquivos binários. Nesses casos, a extensão dos arquivos será .node
Algums módulos Node não estão representados como arquivos independentes. Nesses casos, estão dentro do executáve do node.js.
Há três tipos de identificação para módulos:
- Relative – começam com um ./ ou ../
- Absolute – começam com um / (obviamente relativos a pasta raiz do sistema).
- Top-level – onde o nome do módulo é informado diretamente.
Todos os módulos colocados na pasta node_modules na aplicação, podem ser carregados em top-level. Outra alternativa é modificar a variável de ambiente NODE_PATHS com os caminhos que desejamos suportar.
Node Package Manager (npm)
Módulos node.js são distribuídos através de um utilitário chamado npm. Conceitualmente, é semelhante ao rpm (Redhat), apt-get (Debian) e nuget (.net).
Pacotes para o npm estão em forte acordo com a especificação do CommonJS.
Os pacotes disponíveis para o npm estão listados em http://npmjs.org
Considere o exemplo abaixo:
npm search
Para instalar um módulo, utilize o comando npm install
Para saber detalhes de funcionamento de um módulo, pode utilizar o comando npm view
Era isso.
Publicado em 08/12/2011
0