Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Dúvidas em relação ao auto-load

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();
3 respostas
solução!

Fala aí Leonardo, beleza? Vamos lá:

Primeira dúvida desse arquivo: todos os arquivos que instalamos do NPM retornam uma função não inicializada, assim como o express?

Não, cada biblioteca tem seu export definido de maneira diferente.

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().

Aqui está sendo navegado através das pastas, onde cada pasta seria:

  • app: pasta onde fica toda nossa app.
  • infra: pasta onde fica os arquivos de infraestrutura.
  • connectionFactory: arquivo responsável por realizar e devolver novas conexões com o banco de dados.

Dessa maneira, o acesso fica:

app.infra.connectionFactory

Espero ter ajudado

Matheus, obrigado pela ajuda... Agora consegui entender.

Magina Leonardo, precisando não deixe de criar suas dúvidas.