2016-06-13 47 views
1

我們使用SystemJS加載兩個包:aurelia.jsapp-build.js。 SystemJs一個接一個地加載它們。我們如何讓SystemJs同時加載它們?同時加載包而不是連續加載包

Two xhr requests, one after the other.

我們config.js,爲了清楚省略了細節,看起來是這樣的:

System.config({ 
    defaultJSExtensions: true, 
    transpiler: "none", 
    paths: { 
    // omitted 
    }, 
    meta: { 
    // omitted 
    }, 
    map: { 
    // omitted 
    }, 
    bundles: { 
    "app-build.js": [ 
     "about.html!github:systemjs/[email protected]", 
     "about.js", 
     "admin.html!github:systemjs/[email protected]", 
     "admin.js", 
     // et cetera 
    ], 
    "aurelia.js": [ 
     "github:HubSpot/[email protected]", 
     "github:HubSpot/[email protected]/js/tether.js", 
     "github:Leaflet/[email protected]", 
     "github:Leaflet/[email protected]/dist/leaflet-src.js", 
     // et cetera 
    ] 
    }, 
    depCache: { 
    // omitted 
    } 
}); 
+2

它們是如何加載的?如果'aurelia'沒有加載,你確定'app-build'是可行的嗎? – estus

+0

@estus好問題! 'app-build'確實取決於'aurelia'。沒有它,這是行不通的。我想知道...我們可以同時加載'app-build'和它的依賴嗎? –

+0

@estus你是什麼意思,「他們是如何加載?」想到的答案是SystemJs加載它們。你要求什麼細節? –

回答

1

config.js告訴SystemJS裝載機的基礎捆綁每個模塊的位置。隨着SystemJS需要模塊,懶加載包。你看到上面的原因是依賴關係層次結構是線性的。您index.html可能有這樣一行:

System.import('aurelia-bootstrapper'); 

所以SystemJS尋找一個「Aurelia路上,引導程序」模式,並加載需要它的包。引導程序不是通過根據您的配置加載您的main.jsapp.js文件來啓動。

最好的解決辦法

分開你的包。如果您正在捆綁銷售,那麼您可能也會進行GZipping,因爲這些都是生產環境的標準,並且應該始終一起發生。如果將所有文件捆綁到一個文件中,GZip將獲得更高的壓縮比。除非你自己沒有創建這個包,否則幾乎沒有理由將你的包分開。

另一種解決方案

index.html添加其他包的手動導入與「Aurelia路上,引導程序」進口。

<script> 
    System.import('my-module/main'); 
    System.import('aurelia-bootstrapper'); 
</script>