2012-10-01 183 views
4

在boilerplatejs它看起來像模塊是預加載延遲加載樣板模塊

(參見下面的代碼)

​​

是什麼在這方面的影響,當涉及到大規模的Web應用程序(模塊沉重的Web應用程序)。有沒有辦法在boilerplatejs中延遲加載模塊?

回答

2

Java腳本沒有反射類型的機制來加載內容。任何需要加載的模塊都必須在某處註冊。這就是爲什麼模塊(子上下文)加載如下:

appContext.loadChildContexts(moduleContexts); 

(在SRC/application.js中)

但是你上面的代碼是關於requirejs AMD模塊。這基本上是導入不同的JS腳本(每個都代表模塊的代碼)。使用requireJS AMD,腳本(您的源代碼)不會延遲加載,而是預加載。這是有道理的,因爲您的應用程序源代碼應該在瀏覽器中可供執行。另一方面,當您進行JS優化時,我們無論如何都會創建一個包含所有源代碼的單個腳本。那麼沒有單獨的腳本文件或延遲加載源代碼的意義。

但是應該對行爲應用延遲加載(不加載代碼)。這就是爲什麼只在'activate()'方法中創建UI組件(ViewTemplate)的原因。這些僅在用戶需要時才創建。這是行爲的延遲加載,因此應用程序渲染時間較少。

this.activate = function(parent, params) { 
     // if panel is not created, lets create it and initiate bindings 
     if (!panel) { 
      panel = new Boiler.ViewTemplate(parent, template, nls); 
      ... 
     } 
     vm.initialize(params.name); 
     panel.show(); 
    } 
+0

另見初步認識的問題在這裏:http://stackoverflow.com/questions/12366823/in-boilerplatejs-browser-is-loading-all-the-scripts-in-other-modules-regardles – Hasith