AngularJs 模块 良好的架构

每个 AngularJs 开发人员都知道 Angular 模块并理解 DI 是什么,但有时在实践中会有一些情况,当我们看到我们必须为 AngularJs 模块制作架构时。

由于 AngularJS 现在是一个已弃用的框架,我们可以改用 JavaScript 现代框架,如 Vuejs、React 和 Angular。

让我们看看我们有什么问题。

angular.module( 'Movie', ['Actor'])    //In this module we need actors
    .factory('getMovies',...);
angular.module( 'Actor', ['Movie'])    //In this module We need movies
    .factory('getActors',...);
//  But we will have a circular DI
//  What to do?

每个开发人员都可以提出他的解决方案,但是有很多开发人员提出相同的解决方案。
那么解决方案是什么?
该怎么办?

解决方案是:我们创建一个不像模型/实体方式的模块。
我们将模块创建为函数式,即如果我们有任何控制器(对于 1 个以上的模块)、指令或者服务,我们为它创建一个模块如下:

angular.module('MoviesManager',[])
   .factory('MoviesManager',....);
anfular.module('ActorsManager',[])
    .factory('ActorsManager',...);
//If we need a Movie module, then
angular.module('Movie',['MoviesManager','ActorsManager'...]) //here we can use the Manager to get/set etc. movies 
//If we need a Actor module, then 
angular.module('Actor',['ActorsManager','MoviesManager',...]) //here we can use the Manager to get/set etc. actors
angular.module('Theatre', ['Actor', 'Movie',..]) //we use only those modules

如我们所见,我们不会有任何循环 DI 或者任何其他问题。
该解决方案灵活且非常有用。

日期:2020-06-02 22:18:46 来源:oir作者:oir