Vamos aprender node.js – Parte 2 – Módulos

Publicado em 08/12/2011

0


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.

image

 

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:

  1. Relative – começam com um ./ ou ../
  2. Absolute – começam com um / (obviamente relativos a pasta raiz do sistema).
  3. 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 

image

Considere o exemplo abaixo:

image

 

npm search procura por um módulo conforme palavra-chave.

Para instalar um módulo, utilize o comando npm install . Observe:

image

Para saber detalhes de funcionamento de um módulo, pode utilizar o comando npm view .

image

Era isso.

Smiley piscando

Etiquetado:,
Publicado em: Post