Javascript angularjs中注入依赖项的可维护方法

Javascript angularjs中注入依赖项的可维护方法,javascript,angularjs,Javascript,Angularjs,我想知道如何在angular中以更可读的方式注入依赖项。我对AMD(requirejs)方式更感兴趣。例如: define(function (require) { var ModuleOne = require("ModuleOne"), ModuleTwo = require("ModuleTwo"); var ThisModule = (function () { // code here })(); return T

我想知道如何在angular中以更可读的方式注入依赖项。我对AMD(requirejs)方式更感兴趣。例如:

define(function (require) {
    var ModuleOne = require("ModuleOne"),
        ModuleTwo = require("ModuleTwo");

    var ThisModule = (function () {
          // code here
    })();

    return ThisModule;
});
有没有可能在angularjs中以上述方式注入依赖项,或者有没有比angularjs中的当前方式更好的方法呢?来自angularjs

角度模块解决了从模型中移除全局状态的问题 应用程序,并提供配置喷油器的方法相反 对于AMD或require.js模块,Angular模块不会试图解决 脚本加载顺序或延迟脚本获取问题。这些目标 是正交的,两个模块系统可以并排工作,并且 实现他们的目标

因此,这两个库(RequireJS和AngularJS)的用途完全不同。AngularJS中内置的依赖注入系统处理组件中所需的对象;而RequireJS中的依赖关系管理处理模块JavaScript文件

在requireJS中,加载模块的对象被缓存,当再次请求相同的模块时,它们被服务。另一方面,AngularJS用名称和相应对象的列表维护一个注入器。在这种情况下,只要使用注册名称引用对象,就会为其提供服务

通常我们在angularJS中注入依赖项,比如

someModule.controller('MyController', function($scope,greeter){

});
如果您想要在angularJS中注入依赖项的另一种方法,您可以执行以下操作

var MyController = function($scope, greeter) {
  // ...
}
MyController.$inject = ['$scope', 'greeter'];
someModule.controller('MyController', MyController);

希望有帮助

这样做的问题是,如果控制器需要太多依赖项,那么控制器的回调函数中需要大量参数。我想以某种方式减少这个数量语法。它使您的代码看起来比传统方法更可读。这是可能的,但这并不能解决我的问题。因为我仍然需要太多的参数来处理太多的依赖项,比如
var MyController=function($scope,greeter,dep3,dep4,dep5,dep6,dep7,dep8,dep9,dep10,dep11,dep12,dep13){/…}
您可以使用所有这些依赖项创建一个
服务
,并在控制器中使用该服务。这将使您的控制器可读,尽管您的服务看起来很麻烦。但是,如果服务/控制器正在使用依赖项,则无法跳过该依赖项。您可以将依赖项移动到其他服务/工厂,但无法避免它们<代码>someModule.controller('MyController',函数($scope,greeter,myService){…})。。。其中myService是一个包含所有必需依赖项的工厂
someModule.factory('myService',函数(dep3、dep4、dep5、dep6、dep7、dep8、dep9、dep10、dep11、dep12、dep13){…}