Bonne Architecture de Modules AngularJs
Tous les développeurs d'AngularJs connaissent les modules Angular et comprennent ce que sont les DI, mais parfois, dans la pratique, il y a des situations où il faut créer une architecture pour les modules AngularJs.
Voyons quel problème on a.
angular.module( 'Movie', ['Actor']) // Dans ce module on a besoin d'actor
.factory('getMovies',...);
angular.module( 'Actor', ['Movie']) // Dans ce module on a besoin des Movies
.factory('getActors',...);
// Mais allons-nous avoir un DI circulaire
// Que faire?
Chaque développeur peut proposer sa solution, mais il y a vraiment beaucoup de développeurs qui proposent les mêmes solutions. Alors, quelle est la solution? Que faire?
La solution est la suivante : Nous créons des modules qui ne sont pas du type Model / Entity. Nous créons nos modules comme une fonctionnalité, à savoir si nous avons des contrôleurs (pour plus d’un module), des directives ou des services, nous créons un module comme cela:
angular.module('MoviesManager',[])
.factory('MoviesManager',....);
anfular.module('ActorsManager',[])
.factory('ActorsManager',...);
// Si on a besoin d'un module Movie, alors
angular.module('Movie',['MoviesManager','ActorsManager'...]) // ici on peut utiliser Manager pour obtenir/définir etc. movies
// Si on a besoin d'un module Actor, alors
angular.module('Actor',['ActorsManager','MoviesManager',...]) // ici on peut utiliser Manager pour obtenir/définir etc. actors
angular.module('Theatre', ['Actor', 'Movie',..]) // on utilise ces modules seulement
Comme vous le voyez, nous n'aurons aucune DI circulaire ni aucun autre problème. Cette solution est flexible et très utile.