我想知道如何以更可读的角度注入依赖关系。我对AMD(requirejs)方式更感兴趣。如下:
define(function (require) {
var ModuleOne = require("ModuleOne"),
ModuleTwo = require("ModuleTwo");
var ThisModule = (function () {
// code here
})();
return ThisModule;
});
是否有可能在angularjs中注入以上方式的依赖关系,还是有更好的方法在angularjs中执行当前的方式?
答案 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);
希望它有所帮助!