Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Instância de classes no arquivo src/rotas/rotas.js

A minha dúvida é sobre as instâncias das classes no arquivo de rotas.

As variáveis que instanciam os controllers e a model, foram definidas fora do callback que será exportado, enquanto que há variáveis que ficaram dentro do callback.

Como o escopo dessa variáveis não transcende ao escopo do callback, haveria algum motivo em especial delas serem definidas dentro ou fora dele? É alguma convenção da comunidade js/node, um design pattern ou somente uma preferência do professor?

Isso não ficou muito claro para mim.

// arquivo src/rotas/rotas.js

const BaseControlador = require('../controlador/base-controlador');
const baseControlador = new BaseControlador();

const LivroControlador = require('../controlador/livro-controlador');
const livroControlador = new LivroControlador();

const Livro = require('../modelos/livro');

module.exports = (app) => {
    const rotasBase = BaseControlador.rotas();
    const rotasLivro = LivroControlador.rotas();

// restante do código
1 resposta
solução!

Olá Gabriel, tudo bem? Peço desculpas pela demora em ti responder! Não é um padrão em si, é apenas que o instrutor deseja que sejam exportadas apenas as rotas, quando ele importa e instancias as classes nessas linhas:

const BaseControlador = require('../controlador/base-controlador');
const baseControlador = new BaseControlador();

const LivroControlador = require('../controlador/livro-controlador');
const livroControlador = new LivroControlador();

Ele tem acesso a todos os métodos de BaseControlador e de LivroControlador, porém esse é um arquivo de rotas e quem vai usar esse arquivo não precisa ter acesso ou saber sobre métodos dos controladores, apenas as rotas, por isso que dentro do callback ele coloca apenas as variáveis com as rotas:

const rotasBase = BaseControlador.rotas();
const rotasLivro = LivroControlador.rotas();

Esse é o raciocínio, veja por outro lado, se instanciarmos as mesmas e exportarmos dentro do callback, quem apenas precisa usar as rotas poderá saber também sobre os controladores (o que pode ser perigoso), o adequado é saiba apenas das rotas, e as rotas saibam sobre os controladores e seus métodos.

Espero ter esclarecido sua dúvida!

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