AngularJs Modules Good architecture

Jeder AngularJs-Entwickler kennt die Angular Module und versteht, was DI ist, aber manchmal gibt es in der Praxis einige Situationen, in denen wir sehen, dass wir eine Architektur für AngularJs Module erstellen müssen.

Lassen Sie uns sehen, welches Problem wir haben.

angular.module( 'Movie', ['Actor'])    // In this module we need actors
    .factory('getMovies',...);
angular.module( 'Actor', ['Movie'])    // In this module We need movies
    .factory('getActors',...);

//    Aber wir werden eine kreisförmige DI haben.
//    Was kann man tun?

Jeder Entwickler kann seine Lösung vorschlagen, aber es gibt viele Entwickler, die die gleichen Lösungen vorschlagen. So, welche Lösung können wir in dieser Situation vorschlagen?

Die Lösung ist: Wir erstellen ein Modul, das nicht wie Model/Entity Way funktioniert. Wir erstellen unsere Module als Funktion, d. h. wenn wir irgendwelche Controller (für mehr als 1 Modul), Direktiven oder Dienste haben, erstellen wir ein Modul dafür:

angular.module('MoviesManager',[])
   .factory('MoviesManager',....);
anfular.module('ActorsManager',[])
    .factory('ActorsManager',...);

// Wenn wir Movie-Module benötigen, dann
angular.module('Movie',['MoviesManager','ActorsManager'...]) // hier können wir den Manager benutzen, um Filme zu bekommen/setzen usw. 

// Wenn wir Actor-Module benötigen, dann 
angular.module('Actor',['ActorsManager','MoviesManager',...]) // hier können wir den Manager benutzen, um Actor zu bekommen/setzen usw. 

angular.module('Theatre', ['Actor', 'Movie',..]) // wir verwenden nur diese Module

Wie Sie sehen, werden wir keine kreisförmigen DIs oder andere Probleme haben, diese Lösung ist flexibel und sehr nützlich.