2016-06-13 8 views
1

SystemJSを使用して2つのバンドル、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は「オーレリア・ブートストラップ」モデルを探して、それを必要とバンドルをロードします。ブートストラップは、設定に応じてmain.jsまたはapp.jsファイルをロードすることよりも優先されます。

最善の解決策

は、あなたのバンドルを分離ないを行います。バンドルしている場合、GZIPも同様です。これらは実稼働環境の標準でもあり、常に一緒に実行する必要があるからです。すべてのファイルを1つのファイルにバンドルすると、GZipはより高い圧縮率を達成します。自分でバンドルを作成しない限り、バンドルを分割する理由はほとんどありません。

他のソリューション

あなたindex.htmlに「アウレリア - ブートストラップ」インポートを使用して他のバンドルの手動インポートを追加します。

<script> 
    System.import('my-module/main'); 
    System.import('aurelia-bootstrapper'); 
</script> 
関連する問題