2016-09-17 4 views
1

import {Route} from "./router"を持つメインのapp.jsファイルがあります。 Router - ページの現在のurlに応じて、このページハンドラのインスタンスを作成するクラス。たとえば、ページ/home/accountPageの場合、ルータは次のようにハンドラを作成します:return new AccountPageHandler(params)。ルータでは、すべてのページのすべてのハンドラをインポートしたことが判明しています。そして私がSystem.import ('js/app.js')を実行すると、ルータにインポートされ、ルータがapp.jsにインポートされているため、すべてのスクリプトがロードされます。Systemjを使用した動的ロード、一度にすべてのファイルをロードしない方法は?

すべてを一度にインポートするのではなく、使いたいものだけを作成するにはどうすればよいですか?私は、この問題が既に多くの開発者にとってより早く起きていると確信していますが、それを修正する方法は - 私はこの初めてのことに直面しているので、わかりません。

P.S.

私のjavascriptはタイプスクリプトから生成されます(突然これが問題を解決するオプションに影響する場合)。

+0

同じ問題が発生しています。あらゆる解決策を楽しみにしています。 –

答えて

1

実際のコードは表示されませんが、importすべてのページのすべてのハンドラがあるため、SystemJSはすべてのスクリプトをインポートします。あなたができること(ルータがページハンドラの約束と非同期の読み込みをサポートしている場合)。 System.import('specific_page_handler.js')を使用して、現在必要なページハンドラのみをインポートすることです。

しかし、あなたのアプリケーションのサイズと、別々のチャンクのサイズに応じて、遅延ロード、縮小されたバンドルの作成、長いキャッシュの有効期限の設定、一気にすべてをロードするだけでも問題ありません。複雑さが増す可能性があります。

関連する問題