1
resposta

module.exports = Aula2

Srs, boa tarde.

Eu observei uma diferença na execução do module.exports. Se alguém conseguir esclarecer minha duvida fico agradecido.

arquivo custom-express.js

Se eu aplicar o return dessa forma é necessário alterar o arquivo index.js para:

    const app = require('./src/config/custom-express')();
const express = require('express');
const rotas = require('../app/rotas/rotas.js');

const app = express();
rotas(app);

module.exports = function(){
  return app;    
}

No module apresentado no curso, que eu penso ser mais "elegante" está assim:

    const app = require('./src/config/custom-express');
const express = require('express');
const rotas = require('../app/rotas/rotas.js');

const app = express();
rotas(app);

module.exports = app;
1 resposta

Basta substituir o valor do module exports no seu require que já fica claro:

No primeiro caso:

const app = require('./src/config/custom-express')();
const express = require('express');
const rotas = require('../app/rotas/rotas.js');

const app = express();
rotas(app);

module.exports = function(){
  return app;    
}

O require('./src/config/custom-express') será igual o mesmo que function(){ return app; } Então fica assim:

const app = (function(){ return app; })()

Você criou uma função anonima e já executa retornando o valor de app. No segundo caso está apenas passando o valor de app direto.

Seira a mesma coisa fazer isso

// 1o caso:
var x = (function() { return 1; })();
// 2o caso:
var y = 1;

x e y vão ter o mesmo valor

Obs: Não siguinifica que o primeiro caso é inutil. Você pode colocar um código a mais nessa função que será executado sempre que alguém quiser importar o seu módulo.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software