私はすでにAngular 1で大きなアプリケーションを作成し、遅延読み込みと構造化のためにAMDでrequireJSを作成しました。アプリケーションはルートを使用せず、HTML、css、Javascript(角度モジュール)などのアプリケーションの一部を使用します遅延ロードされます。
今、私はAngular 2に変更したいと思います。そして、ルートに依存せず、依存しないHTML、css、およびJS(角度)コンテンツに最適な遅延読み込み手法を探しています。何千もの異なるjavascriptフレームワークで。
したがって、遅延読み込みルートコンポーネントは非常に単純なようです: http://blog.mgechev.com/2015/09/30/lazy-loading-components-routes-services-router-angular-2
しかし、ルートなしでそのシナリオをどのように達成しますか? webpackのようなものをお勧めしますか、それともrequireJSを保持する必要がありますか? angular 2のOClazyloadのようなものはありますか?またはフレームワークがなくてもAngular 2で何らかの形で機能しますか?
私は「シンプルに保つ」の友達で、できるだけ小さくシンプルにしたいと思っています。
ありがとう!
Angular2はWebコンポーネントに基づいています。最も簡単な方法(あなたが言ったように「シンプルに保つ」)は、ルートとコンポーネントを使用することです。 HTMLでディレクティブを使用するだけで、コンポーネントをロードすることもできます。例えば:
@Component({
selector: 'my-component', // directive name
templateUrl: './app/my.component.html',
directives: []
})
export class MyComponent {}
@Component({
selector: 'root-component', // directive name
directives: [MyComponent],
template: '<my-component></my-component>',
})
export class myComponent {}
テンプレートを変更して<my-component>
を動的に含めると、コンポーネントが動的にロードされます。これはベストプラクティスではありません。
動的コンポーネントローダー for angular 2ですが、ルートやディレクティブを使用するほど簡単ではありません。コンポーネントのインスタンスを作成し、にアタッチします。別のコンポーネントインスタンスのコンポーネントビュー内にあるビューコンテナ。
それであなたは使うことができます:
@Component({
selector: 'child-component',
template: 'Child'
})
class ChildComponent {
}
@Component({
selector: 'my-app',
template: 'Parent (<child id="child"></child>)'
})
class MyApp {
constructor(dcl: DynamicComponentLoader, injector: Injector) {
dcl.loadAsRoot(ChildComponent, '#child', injector);
}
}
bootstrap(MyApp);
結果のDOM:
<my-app>
Parent (
<child id="child">Child</child>
)
</my-app>
このコンポーネントインスタンス用にプロビジョニングされたインジェクターを構成するプロバイダーをオプションで提供できる別のオプションがあります(上記のangular2リンクを参照)。
お役に立てれば。
angular 2最新バージョンでは、loadchildrenプロパティを使用して遅延読み込みを実行できます。例:{path: 'Customer'、loadChildren: './ customer.module#Customer2Module?chunkName = Customer'} 、
上記の例では、webpack Bundling(angular 2 router loader)+ Anguar 2Routingを使用してモジュールを遅延ロードしています。
https://medium.com/@daviddentoom/angular-2-lazy-loading-with-webpack-d25fe71c29c1#.582uw0wac
アプリケーションに「home」と「about」の2つのページがあると仮定します。一部の人々はアバウトページに到達しないかもしれないので、実際にそれを必要とする人々にのみアバウトページのロードを提供することは理にかなっています。ここで遅延読み込みを使用します。