浏览器

时间:2015-05-11 09:31:40

标签: javascript browserify

我是JavaScript的新手,来自c ++背景我发现自己有点困惑。我有一个javascript文件为另一个javascript文件设置一个工作环境工厂类,如下所示:

<body>
<script src = "environment.js" ></script>
<script src = "main.js" ></script>
</body>

这个想法是不同的index.html将有不同的environment.js文件,它以不同的方式配置环境但共享相同的main.js文件。

我还有一个简单的factory.js文件,它被environment.js和main.js所需(这是environment.js配置和main.js使用的)

Factory.js

function PlatformFactory(){
    this._factories = {};
}

PlatformFactory.prototype.registerService = function(name, service) {
    this._factories[name] = service;
}

PlatformFactory.prototype.requestService = function(name) {
    if (name in this._factories) {
        return this._factories[name];
    }
    throw Error("No service called " + name + " found in platform factory");
}

var factory = new PlatformFactory();
module.exports = factory;

Environment.js

(function () {
    var mod_platform_factory = require("../../../platform/factory.js");
mod_platform_factory.registerService("connection", require("./connection.js"));
})();

我已经删除了这两个文件以便于阅读和ommited包括connection.js代码,因为我认为它是不必要的。一切都按预期工作,连接对象愉快地位于单个PlatformFactory对象的_factories中。

然后它开始执行main.js

var mod_platform_factory = require("../../libs/platform/factory.js");

$(document).ready(function () {
    var connection = mod_platform_factory.requestService("connection");
    connection.connect();       
}
)

现在我从来没有到达connection.connect()行,因为requestService函数抛出了我放在PlatformFactory.requestService中的错误。查看PlatformFactory._factories对象,没有名为connection的服务。

有人可以解释一下我做错了吗?

由于

1 个答案:

答案 0 :(得分:0)

在environment.js中创建的mod_platform_factory将被您在main.js中创建的mod_platform_factory覆盖。

后者没有连接。