Muchas personas (¿la mayoría?) De AngularJS parecen abogar por dividir las aplicaciones de AngularJS en muchos módulos.
Brian Ford en su blog ya afirma que empaquetar por capa (controlador, servicio, etc.) es una noción "tonta", por lo que ni siquiera iré allí. (Ver http://briantford.com/blog/huuuuuge-angular-apps .)
Pero supongamos que modulariza una aplicación por característica. Quizás tenga un módulo de usuarios y un módulo de mensajes , junto con el módulo de aplicación estándar para cargar estos módulos de funciones. Coloca cuidadosamente las rutas relacionadas con la funcionalidad del usuario en el módulo de usuarios , y las rutas relacionadas con los mensajes en el módulo de mensajes . Ahora, en mi opinión, ha creado una dependencia en CADA módulo de características en ngRoute . Entonces, cada módulo debe incluir "ngRoute" en su conjunto de dependencias, ¿verdad?
Desafortunadamente, AngularJS hace que sea demasiado fácil arruinarlo. Si su módulo de aplicación carga tanto usuarios como mensajes , pero solo los usuarios enumeran "ngRoute" como una dependencia, no importa en el tiempo de ejecución: $ routeProvider aún se inyectará en su función de configuración en los mensajes , ya que esencialmente se resolvió a través del módulo de usuarios dependencia de ngRoute .
Mi problema puede ser con el patrón común de un módulo de "aplicación" que carga / hace referencia a varios módulos de funciones. El patrón tiene sentido para mí, al igual que las dependencias transitivas. Lo problemático es que la implementación particular de Angular puede enmascarar casos en los que un módulo no hace referencia a sus dependencias de módulo, incluso indirectamente. El módulo puede funcionar en el contexto de una aplicación en particular (porque el módulo está referenciado por otro módulo de "aplicación" que también hace referencia a sus dependencias directa o indirectamente), pero si copiara el módulo en otra aplicación, fallaría debido a la falta de dependencias.
Tengo la impresión de que la mayoría de la gente no consideraría mucho el hecho de que el módulo de usuarios ahora es esencialmente una dependencia del módulo de mensajes . Sin embargo, es un problema que tengo problemas para mirar más allá. Para mí, si es probable que estemos creando estas dependencias confusas entre módulos de características, realmente disminuye el beneficio neto de la modularización, y preferiría tener un solo módulo de aplicación que encapsule todos los componentes para todas las características de la aplicación.