Muitas pessoas (a maioria?) Do AngularJS parecem defender a quebra dos aplicativos AngularJS em vários módulos.
Brian Ford, em seu blog, já afirma que empacotar por camada (controlador, serviço etc.) é uma noção "boba", então nem vou lá. (Consulte http://briantford.com/blog/huuuuuge-angular-apps .)
Mas vamos supor que você modularize um aplicativo por recurso. Talvez você tenha um módulo de usuários e um módulo de mensagens , juntamente com o módulo de aplicativo padrão para carregar esses módulos de recursos. Você coloca cuidadosamente as rotas relacionadas à funcionalidade do usuário no módulo de usuários e as rotas relacionadas à mensagem no módulo de mensagens . Agora, na minha opinião, você criou uma dependência em CADA módulo de recurso no ngRoute . Então, cada módulo deve listar "ngRoute" em sua matriz de dependências, certo?
Infelizmente, o AngularJS facilita demais tudo isso. Se o seu módulo de aplicativo carrega usuários e mensagens , mas apenas os usuários listam "ngRoute" como uma dependência, não importa em tempo de execução: $ routeProvider ainda será injetado na sua função de configuração nas mensagens , tendo sido essencialmente resolvido através do módulo de usuários dependência do ngRoute .
Meu problema pode estar no padrão comum de um módulo "aplicativo" carregando / fazendo referência a vários módulos de recursos. O padrão faz sentido para mim, assim como as dependências transitivas. O que é problemático é que a implementação específica do Angular pode mascarar casos em que um módulo não faz referência indireta às dependências do módulo. O módulo pode funcionar no contexto de um aplicativo específico (porque o módulo é referenciado por outro módulo "aplicativo" que também faz referência direta ou indireta a suas dependências), mas se você copiasse o módulo em outro aplicativo, ele falharia. devido à falta de dependências.
Tenho a impressão de que a maioria das pessoas não consideraria muito o fato de que o módulo de usuários agora é essencialmente uma dependência do módulo de mensagens . No entanto, é um problema que tenho problemas para olhar para o passado. Para mim, se estamos criando essas dependências confusas entre os módulos de recursos, isso realmente diminui o benefício líquido da modularização, e eu prefiro ter apenas um único módulo de aplicativo que encapsule todos os componentes para todos os recursos do aplicativo.