Pesquisar

Postagens populares

quarta-feira, 3 de outubro de 2012

Como construir um pacote Node.JS

Algumas vez fui questionado como se faz para construir um pacote em Javascript que posteriormente possa ser utilizado em um ou vários projetos com Node.JS igualmente os pacotes padrão do framework ou os que são instalados via NPM.


Bem, é muito simples. Primeiro devemos conhecer a afirmativa de exportação do Javascript, o "exports", ele serve para prover variáveis, funções ou objetos de um script Javascript para outro, exemplo:

// Arquivo circulo.js
var PI = Math.PI;

exports.nome = "circulo";

exports.area = function (raio) {
     return PI * raio * raio;
};

exports.circunferencia = function (raio) {
     return 2 * PI * raio;
};

 Assim, nosso pacote "circulo.js", já pode ser importado para qualquer projeto que precisarmos dele, utilizando a afirmativa "require", exemplo:

// Aquivo teste.js
var circulo = require('./circulo.js');

console.log('Nome do pacote: ' + circulo.nome);
console.log('A área de um circulo de raio 4 é: ' + circulo.area(4));
console.log('A circunferência de um circulo de raio 4 é: ' + circulo.circunferencia(4));

Muito bem, como mencionado antes, com a afirmativa "exports" podemos prover variáveis, funções ou objetos de um script a outro. Vamos então construir um exemplo mais avançado, com um Object Map ("Object Map, é o nome mais adequado para se referir a Objetos no Javascript"), exemplo:

// Arquivo elementos.js
var circulo = require('./circulo.js');

// Elemento Caixa
exports.Caixa = function(largura, comprimento, altura){
    this.largura = largura || 0;;
    this.comprimento = comprimento || 0;
    this.altura = altura || 0;
    this.calcularArea = function(){
        return ((this.largura * this.comprimento) * 2) + ((this.largura * this.altura) * 2) + ((this.comprimento * this.altura) * 2);
    }
}

// Elemento Cone
exports.Cone = function(raio, altura){
    this.raio = raio || 0;;
    this.altura = altura || 0;
    this.calcularArea = function(){
        var geratiz = Math.pow(Math.pow(raio, 2) + Math.pow(altura, 2), 0.5);
        return circulo.area(this.raio) + (Math.PI * this.raio * geratiz);
    }
}

Alterando o arquivo "teste.js" para:

// Aquivo teste.js
var circulo = require('./circulo.js');
var elemento = require('./elementos.js');

function exibir(){
    this.escrever = function(mensagem){
        console.log(mensagem);
    }
}

exb = new exibir();

caixa =  new elemento.Caixa(2, 2, 2);
cone =  new elemento.Cone(3, 5);

exb.escrever('Nome do pacote: ' + circulo.nome);
exb.escrever('A área de um circulo de raio 4 é: ' + circulo.area(4));
exb.escrever('A área da caixa é: ' + caixa.calcularArea());
exb.escrever('A área do cone é: ' + cone.calcularArea());

Note que agora estamos importando também, objetos, então, desta forma você pode construir seus pacotes e reutilizar eles em seus códigos, e se você acha ele realmente útil, vá no site oficial do NPM crie seu cadastro e compartilhe seu pacote com a comunidade.

Nenhum comentário: