在angularjs中注入依赖关系的可维护方式

时间:2015-06-13 09:40:19

标签: javascript angularjs

我想知道如何以更可读的角度注入依赖关系。我对AMD(requirejs)方式更感兴趣。如下:

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

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

    return ThisModule;
});

是否有可能在angularjs中注入以上方式的依赖关系,还是有更好的方法在angularjs中执行当前的方式?

1 个答案:

答案 0 :(得分:2)

来自Angular JS official website

  

Angular模块解决了从中删除全局状态的问题   应用程序并提供配置进样器的方法。 相反   对于AMD或require.js模块,Angular模块不会尝试解决   脚本加载排序或延迟脚本提取的问题。这些目标   是正交的,两个模块系统可以并排生活   实现他们的目标。

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

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

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

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

});

如果你想在angularJS中注入依赖关系的替代方法,你可能会做类似的事情。

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

希望它有所帮助!