Olá pessoal!
Seguem códigos para posterior explicação da dúvida:
// arquivo rotas.js
module.exports = (app) => {
app.get('/', function(req, resp) {
resp.send(
`
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<h1> Casa do Código </h1>
</body>
</html>
`
);
});
app.get('/livros', function(req, resp) {
resp.send(
`
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<h1> Listagem de livros </h1>
</body>
</html>
`
);
});
}
// parte do código do arquivo custom-express.js
const express = require('express');
const app = express();
const bodyParser = require('body-parser');
const methodOverride = require('method-override');
app.use('/estatico', express.static('src/app/public'));
app.use(bodyParser.urlencoded({
extended: true
}));
app.use(methodOverride(function (req, res) {
if (req.body && typeof req.body === 'object' && '_method' in req.body) {
// look in urlencoded POST bodies and delete it
var method = req.body._method;
delete req.body._method;
return method;
}
}));
const rotas = require('../app/rotas/rotas');
rotas(app);
module.exports = app;
Dúvida: talvez deixei passar alguma explicação neste curso ou nos dos módulos avançados de JS (ou deu um branco/loop geral), porque não entendi a linha de código (como funciona essa ligação/associação entre a const/func rotas e o objeto app): rotas(app);
Complementando, não entendi como é que a func rotas é, posteriormente (durante a execução), chamada "automaticamente", e como ela enxerga o objeto app. Para mim parece que deveria ser algo como:
const rotas = require('../app/rotas/rotas')(app);
Ou seja, que no momento do require o objeto já deveria ser passado por parâmetro, para a const rotas poder ter essa associação entre app e a função rotas em si.
Ou então que, de alguma forma, a const rotas fosse associada ao objeto app (algo como app.algumMetodo(rotas)
), ao invés do atual rotas(app)
.
Desde já obrigado! Atenciosamente.