Fala Matheus, bora lá:
Eu fui pro MVC por ser o padrão de projeto demonstrado no curso de JS I daqui da Alura, se ele já tá um pouco pra trás, qual seria o ideal então?
Isso vai depender muito de cada projeto, acredito que a pegada funcional está cada vez sendo a mais escolhida, React e Vue por exemplo estão abandonando o uso de Classes e partindo para abordagens funcionais (o que seria assunto para um curso específico).
Fora o MVC existem outros padrões, por exemplo: MVVM, MVP, MVI, BLOCK.
A maioria desses novos focam em reatividade (também seria assunto para um curso específico), ou seja, construir sua aplicação em cima de eventos e estados, uma vez que novos eventos ou algum estado foi alterado, a ideia é que as views se atualizem sozinhas.
Não ficou claro pra mim o conceito de domínio e rota que você citou, qual a diferença deles para o model por exemplo?
O domínio seria algo mais complexo, por exemplo: ClientController
, ele iria conter funções para lidar com listagem de cliente, formulário, etc...
Ja a abordagem de rota, seria algo menos e mais separado, ou seja, em vez de ter um único controller, você teria um para cada rota, exemplo: ClientListController
e ClientFormController
.
Cada um iria lidar com funções para listagem de cliente e formulário respectivamente.
Eles também não são classes que irei criar para lidar com os dados de cada entidade?
Depende de cada abordagem, você pode optar em criar um único model ou definir um para cada rota.
Se você tiver um único model que seria por domínio, seria algo do tipo: Client
, nele iria ter todos os dados e funções de cliente para sua aplicação.
Ou por rota ClientList
, nele você iria ter apenas dados e funções que a página de listagem precisa.
Fora isso tem outras N maneiras de construir uma arquitetura de aplicação.
Não existe muito certo/errado e sim aquilo que se encaixa e faz sentido para seu cenário/necessidade/contexto.
Se para você faz sentido e se encaixa o MVC, use o MVC, não é errado.
Espero ter ajudado.