使用browserify在angularJS中注入模块的最佳实践

时间:2016-02-04 09:48:34

标签: javascript angularjs module gulp browserify

我试图通过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仍然有效,这很重要。)

0 个答案:

没有答案