Eu não consegui entender quase desse capítulo. Vi o vídeo várias vezes e li a descrição, porém , ainda assim não consegui entender.
app.js
const app = require('./config/express')();
app.listen(3000, () => {
console.log('Servidor rodando...');
});
Bom, o arquivo do express.js está sendo lido e interpretado com o require e na mesma linha, já estamos invocando a função que o module.exports retorna. Até aqui beleza.
express.js
const express = require("express");
const load = require("express-load");
module.exports = () => {
const app = express();
app.set("view engine", "ejs");
app.set("views", "./app/views");
load("routes" , { cwd : "app"})
.then("infra")
.into(app);
return app;
}
Primeira dúvida desse arquivo: todos os arquivos que instalamos do NPM retornam uma função não inicializada, assim como o express?
Segunda dúvida: esse load() vai dar um require em todos os arquivos da pasta app/routes e app/infra e retonar a função do module.exports() para dentro da variável app que no caso, será retornada como uma função e será invocada novamente no arquivo app.js?
connectionFactory.js
const mysql = require('mysql');
function createDBConnection() {
return mysql.createConnection({
// info.banco
});
}
module.exports = () => {
return createDBConnection;
}
Eu sei que o código acima está relacionado com o código abaixo. Porém, não entendi essa lógica de wrapper e esse caminho pra acessar a function connectionFactory() retornada pelo module.exports().
const connection = app.infra.connectionFactory();