0

我创建了一个服务定位器类来访问我的 javascript 应用程序中的不同服务类,但我不确定服务定位器在 javascript 中的效果如何,因为我必须在每个页面上包含包含文件。

例如,我的服务定位器中有两个服务,但是如果我只需要访问页面上的一个服务,那么我仍然需要包含两个 js 文件。那是好的javascript设计吗?两个正确包含不会显着影响性能,但是如果我用 10 个服务扩展我的服务定位器,那么我需要包含 12 个 js 文件,即使我可能只需要在一个页面上访问一个或两个。我如何在javascript中以最好的方式做到这一点?

这是我的服务定位器代码:

function serviceFactory() {
    this.constructor = function () {
        this.retailService = new retailService();
        this.outlookService = new outlookService();
    }

    this.constructor();
}
4

2 回答 2

0

有几种解决方案可以在需要时动态包含您的脚本。

  1. 要求JS
  2. 头.js
  3. $.getScript()

但是您应该注意,浏览器缓存很多,这意味着一旦他们下载了某些内容,他们将在一段时间内不再执行此操作(具体多长时间取决于浏览器和网络服务器配置)。

于 2013-04-15T20:47:24.537 回答
0

我相信您在编写的代码中混合了两个概念。服务定位器不处理服务实例化。它允许记录系统可用的服务。

从这个意义上说,服务定位器应该类似于

var ServiceLocator = new function () {
    var self = this;
    var services = {};

    self.register = function (key, service) {
        services[key] = service;
    };

    self.resolve = function (key) {
        return services[key];
    };
};

然后,需要创建和注册服务,但是由于每个页面需要不同的服务,因此预先构建它们的工厂将无法正常工作。你可以让服务注册自己像

var RetailService = function () {
    // service definition        
};
ServiceLocator.register('retailService', new RetailService());
于 2015-01-07T21:26:33.253 回答