2017-03-22 5 views
2

角度2のアプリケーションランタイムで異なるモジュールを別のサーバからロードすることはどういうことですか?もしそうなら、どうしたらいいですか?実行時に別のサーバからモジュールをロードする

私はアプリを別のサーバ(A、B、C)からアプリケーション全体にロードしたいので、メインアプリやAに含まれているコンポーネントとは独立して取り込んで更新することができます、BまたはCはロードされません。下部に表示されている3つのモジュールにはコンポーネントがありますが、メインアプリケーションはコンポーネントをロードするHTMLを宣言します。経路で

Overview

UPDATE

遅延読み込み私が探しているものではありません、3つのモジュールは、ENZホスティング、自分のリポジトリ、プロジェクトが完全に独立したモジュールである必要があります。

+0

SystemJSまたはWebpack 'require.ensure'を使用してES6モジュールを動的にロードできます。 A2はこれを怠惰なロードルートで処理します。それ以外の方法はありません。 「私が探しているものではない」は、この状況をルータで正しく処理するためにアプリケーションを設計していないことを示しています。良い推論がなければ、XY問題に似ています。 – estus

+0

@estus、このwebpack関数を使ってどのように動作するのか少し詳しく説明できますか? アングル1では、スクリプトA、B、Cのメインアプリケーションからモジュールを見つけて、コントローラ、ディレクティブ、サービスをそのように宣言することで、この問題に取り組むことができました。 – Myth1c

+0

['import'](https://webpack.js.org/guides/code-splitting-import/)がうまくいくでしょう。 (([modA、modB])=> .... @ NgModule( 'modA'、 'modB'、 ' ... import:[modA、modB])...)クラスMainMod {} '。繰り返しますが、これは設計上の問題のように見えます。可能であれば、このアプローチには多くの問題がある可能性があります。これを行う正しい方法は、コンポーネントルーターと遅延ルートです。 – estus

答えて

3

ちょっと遅れていますが、経路に遅延ロードメカニズムを使用して、まさに必要なことをすることができます。

別のソースからWebPACKのモジュールをロードする方法については、この資料の状態:あなたはloadchildrenセクションでコールバックを定義するルートで Solution: load independently compiled Webpack 2 bundles dynamically

const appRoutes: Routes = [ 
    {path: '', component: MainComponent}, 
    {path: 'modulea', loadchildren: loadModuleA} 
] 

loadModuleA方法は、次のようになります。

export function loadModuleA() { 

    return new Promise((resolve, reject) => { 

     // the method from the article 
     loadPlugin('path/to/server/of/moduleA', (exports) => { 
      // The Submodule must export ModuleA 
      resolve(exports.ModuleA); 
     }); 

    }); 

} 
関連する問題