每个 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