我试图通过gulp和browserify来简化我的角度应用程序。不幸的是,我正在努力解决与角度依赖注入(DI)混合的需求和出口的概念。我必须更改很多文件才能让browserify运行,所以我想在开始之前先清楚一些事情。
例如,我有一个模块moduleAB,它包含两个工厂,每个工厂定义一个类。 FactoryA创建classA,factoryB创建classB。 classB继承自classA。所以在我的代码中我有类似的东西:
angular.module("moduleAB", [])
.factory("factoryA", ["$window", function(wndw) {
return function classA (a, b) {
this.a = a;
this.b = b;
};
}])
.factory("factoryB", ["factoryA", function(classA) {
var classB = function (a, b) {
classA.call(this, a, b);
};
classB.prototype = Object.create(classA.prototype);
classB.prototype.constructor = classB;
return classB;
}]);
现在我读到为了完美使用browserify,我必须将我的模块拆分成单独的文件并使用index.js
来要求该模块的各个部分:
var angular = require("angular");
module.exports = angular.module("moduleAB", [])
.factory("factoryA", require("./factoryA"))
.factory("factoryB", require("./factoryB"));
到目前为止,这么好。现在我需要工厂A和B的文件。但是实现这些并保留DI的最佳方法是什么?我应该写一些像(factoryA.js
):
module.exports = ["$window", function(wndw) {
return function classA (a, b) {
//...
};
}];
和(factoryB.js
):
module.exports = ["factoryA", function(factoryA) {
//...
}];
或者做(factoryB.js
)更好:
var factoryA = require("./factoryA");
module.exports = [function() {
//...
}];
或(factoryB.js
):
module.exports = [require("./factoryA"), function(factoryA) {
//...
}];
在缩小后,DI仍然有效,这很重要。)