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

Dúvida funcionamento express-load do nodejs

Estou com uma dúvida referente ao express-load, Anteriormente o código para carregar as rotas, passamos a instancia app (do express) para classe responsável do produto. app.js

var app = require('./config/express')();
var rotasProdutos = require('./app/routes/produtos')(app); //passamos aui

app.listen(3000,functon(){
    console.log("servidor rodando";)
});

em produto.js, pegamos a app pelo parâmetro da função.

module.exports = function(app){
    app.get('/produtos', function(req, resp){
        var connection = app.infra.connectionFactory();
        var produtosDAO = new app.infra.ProdutosDAO(connection);

        produtosDAO.lista(function(erros, resultados){
            resp.format({
                html: function(){
                    resp.render('produtos/lista', {lista:resultados});
                },

                json: function(){
                    resp.json(resultados);
                }
            })

        })
        connection.end();
    })

Até aqui tudo bem, mas ao adotar o express-load, a app mudou para:

var app = require('./config/express')();

app.listen(3000, function(){
    console.log("servidor rodando");
})

E o produto js ficou o mesmo, ou seja, com app vindo como parâmetro da função e continuou funcionando. Gostaria de saber como ele faz isso por debaixo dos panos, na aula não ficou muito claro (aula 2 - 14 Carregamento automático dos módulos).

3 respostas
solução!

Olá, Fabrício.

O express-load deixa todos os módulos que você executa com ele dentro do escopo do app dessa forma você não terá nenhuma problema em lidar com essa variável. Para o express-load carregar seus arquivos ele utiliza a API de FileSystem, depois disso ele cria os níveis de pasta utilizando o prototype e por último carrega todos os módulos que você passou pra ele.

Se quiser ver um pouco mais sobre as coisas internas que ele faz, você pode dar uma olhada no código dele e caso fique alguma dúvida é só falar que podemos tira-las :-)

Ah! O código do express-load está aqui: https://github.com/jarradseers/express-load/blob/master/lib/express-load.js

Entendi vlw.

Tento mais dúvidas, só falar. Bons estudos man. :-)