Skip to content

Instantly share code, notes, and snippets.

@alanhoff
Last active August 29, 2016 13:47
Show Gist options
  • Save alanhoff/a6e3c6d91f01885e9666 to your computer and use it in GitHub Desktop.
Save alanhoff/a6e3c6d91f01885e9666 to your computer and use it in GitHub Desktop.
// Imagine que esse ẽ o modulo1.js
var somar = function(a, b){
return a + b;
};
// Aqui estou dizendo para o require que ele pode usar
// a função que está linkada a esta variável
module.exports = somar;
// E esse é meu modulo2.js
var dividir = function(a, b){
return a / b;
};
var multiplicar = function(a, b){
return a / b;
};
// Aqui estou dizendo para o require
// que o meu mõdulo está exportando algumas
// coisas em forma de objeto
exports.dividir = dividir;
exports.multiplicar = multiplicar;
/* Que seria exatamente a mesma coisa que usar isso
module.exports = {
dividir : dividir,
multiplicar : multiplicar
};
*/
// Agora esta é a aplicação principal que usará os dois módulos
// note como estou chamando cada função exportada
var modulo1 = require('./modulo1');
var modulo2 = require('./modulo2');
var soma = modulo1(1, 2); // 3
var dividir = modulo2.dividir(4, 2) // 2
var multiplicar = modulo2.multiplicar(2, 2) //4

Como da para perceber a única coisa que muda é o jeito que chamamos as coisas que exportamos, o module.exports basicamente transforma isso:

var modulo1 = require('./modulo1');

Nisto:

var modulo1 = function(a, b){
    return a + b;  
};

Enquanto o exports.qualquercoisa, transforma isso:

var modulo2 = require('./modulo2');

Nisto:

var modulo2 = {
    dividir : function(a, b){
        return a / b;  
    },
    multiplicar : function(a, b){
        return a / b;  
    };    
};

Também podemos ver que não tem nada relacionado com globais pois precisamos usar o require dentro de cada arquivo que queremos executar as funções exportadas.

@nicholasess
Copy link

obrigado pela explicação :)

@suissa
Copy link

suissa commented May 23, 2014

ótimo quando alguém me perguntar vou passar esse gist

@muktharrox
Copy link

Fantastica explicação, simples e objetiva.

@chrisenytc
Copy link

Muito legal, também vou usar esse gist caso alguém me pergunte também. 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment