2013-04-15 68 views
0

我做了一個服務定位器類來訪問我的JavaScript應用程序中的不同服務類,但我不知道服務定位器在JavaScript中效果如何,因爲包含文件我必須包括在每一頁上。Javascript和服務定位器和包括js文件

例如我在我的服務定位器中有兩個服務,但是如果我只需要訪問頁面上的某個服務,那麼我仍然需要包含兩個js文件。這是很好的JavaScript設計?其中包括適當的不會影響性能明顯,但如果我擴大我的服務定位器10服務,那麼我需要包括12個js文件,事件我可能只需要訪問一個或兩個頁面上。我如何做到這一點在JavaScript中的最佳方式?

這裏是我的服務定位器代碼:

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

    this.constructor(); 
} 

回答

0

有幾種解決方案需要時可以動態包括腳本。

  1. RequireJS
  2. Head.js
  3. $.getScript()

但是你要注意,瀏覽器緩存了很多,這意味着他們下載的東西之後,一旦他們不會在一段時間再做一遍(如何完全取決於瀏覽器和網絡服務器配置)。

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());