ホームページ ウェブフロントエンド jsチュートリアル angular2 ルーティングのプリロード例の詳細な説明

angular2 ルーティングのプリロード例の詳細な説明

Jan 27, 2018 pm 02:21 PM
詳しい説明

この記事では主に angular2 のルーティング プリロード戦略を紹介します。編集者はこれが非常に優れていると考えていますので、参考にしてください。編集者をフォローして見てみましょう。皆さんのお役に立てれば幸いです。

1. 問題の説明

ルートが遅延ロードされていない場合、初めて使用するときのロードが非常に遅くなり、Angular2 では遅延ロードに loadChildren を使用できます。初めて使用する場合は必要なモジュールのみがロードされ、その他のモジュールは実際に使用するときにロードされます。このとき、ブラウザのコンソールを開いて js のロードを確認すると、対応する js が表示されます。使用するとロードされるため、対応する js の最初のクリックが発生します。モジュールの機能はしばらく遅れますが、後で使用するときに停止することはありません。この問題を解決するためにプリロード戦略を使用する方法を説明します。

2. プリロード戦略

RouterModule.forRoot の 2 番目の構成オプションは、もちろん、ここでは preloadingStrategy 構成についてのみ説明します。プリロード戦略の構成です。プリロードを必要としない一部のシナリオでは、それを構成する必要はありません。まず、selective-preloading-strategy.ts の新しいファイルを作成します。 PreloadingStrategy を実装するクラスを使用します。コードは次のとおりです。


import { PreloadingStrategy, Route } from "@angular/router";
import { Observable } from "rxjs";
/**
 * 预加载策略
 */
export class SelectivePreloadingStrategy implements PreloadingStrategy {
  preload(route: Route, load: Function): Observable<any> {
    //当路由中配置data: {preload: true}时预加载
    return route.data && route.data && route.data['preload'] ? load() : Observable.of(null);
  }

}
ログイン後にコピー

上記の意味は、ルートに data: {preload: true} パラメータを設定するときの意味です。ここでの Strategy は、load() を返します。つまり、設定がない場合は、プリロードされません。デフォルトでは、プリロードされません。私の github にあるものと同様に、設定をプリロードする必要はありません。柔軟に使用できます。


次に、RouterModule.forRoot の設定であるルートに戦略を追加します。コードは次のとおりです。

import { NgModule }       from '@angular/core';
import { RouterModule, Routes } from '@angular/router';

import {SelectivePreloadingStrategy} from "./selective-preloading-strategy";

import { LoginComponent }   from './login/login.component';
import { MainComponent }  from './main/main.component';



/**
 * app路由
 */
const routes: Routes = [
 { path: '', redirectTo: '/login', pathMatch: 'full' },
 { 
   path: 'login', 
   component: LoginComponent
 },
 { 
   path: 'app', 
   component: MainComponent,
   loadChildren: 'app/main/main.module#MainModule',
   data: {preload: true}
 }
];

export const appRoutes=RouterModule.forRoot(routes,{preloadingStrategy: SelectivePreloadingStrategy});
ログイン後にコピー

これを AppModule のプロバイダーにも追加する必要があります。コードは次のとおりです。 :

/**
 * app模块
 */
@NgModule({
 imports: [
  appRoutes,
  BrowserModule,
  BrowserAnimationsModule,
  NgbModule.forRoot(),
  MainModule,
  LoginModule
 ],
 declarations: [
  AppComponent,
  ToastBoxComponent,
  ToastComponent,
  SpinComponent
 ],
 providers: [AppService,ToastService,HttpService,SpinService,SelectivePreloadingStrategy],
 exports:[ToastBoxComponent,SpinComponent],
 bootstrap: [ AppComponent ]
})
export class AppModule {}
ログイン後にコピー

Next ルーティングで使用されるコードは次のとおりです:

import { NgModule, OnInit } from '@angular/core';
import { RouterModule, Routes, Router } from '@angular/router';

/**
 * 主体路由
 */
const routes: Routes = [
   { path: 'home', loadChildren: 'app/home/home.module#HomeModule', data: {preload: true} },
   { path: 'demo', loadChildren: 'app/demo/demo.module#DemoModule', data: {preload: true} },
];

export const mainRoutes = RouterModule.forChild(routes);
ログイン後にコピー

ブラウザ F12 を開いて、JS の読み込みを確認します。ページが読み込まれると、他のモジュールの JS が読み込まれることがわかります。プリロードされます

公式 Web サイトに PreloadAllModules がデフォルトで実装されています。公式 Web サイトの手順を参照してください。

具体的なコードは私の github (https://github.com/332557712/cc) にあります。

関連する推奨事項:


JS プリロードビデオオーディオ/ビデオスクリーンショット共有のヒント

プリロード遅延モジュールの Angular 実装例の共有

JS 画像プリロード例

以上がangular2 ルーティングのプリロード例の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Win11での管理者権限の取得について詳しく解説 Win11での管理者権限の取得について詳しく解説 Mar 08, 2024 pm 03:06 PM

Win11での管理者権限の取得について詳しく解説

Oracle SQLの除算演算の詳細説明 Oracle SQLの除算演算の詳細説明 Mar 10, 2024 am 09:51 AM

Oracle SQLの除算演算の詳細説明

PHPモジュロ演算子の役割と使い方を詳しく解説 PHPモジュロ演算子の役割と使い方を詳しく解説 Mar 19, 2024 pm 04:33 PM

PHPモジュロ演算子の役割と使い方を詳しく解説

Linuxシステムコールsystem()関数の詳細説明 Linuxシステムコールsystem()関数の詳細説明 Feb 22, 2024 pm 08:21 PM

Linuxシステムコールsystem()関数の詳細説明

C言語学習ルートを詳細に分析 C言語学習ルートを詳細に分析 Feb 18, 2024 am 10:38 AM

C言語学習ルートを詳細に分析

Linuxのcurlコマンドの詳しい説明 Linuxのcurlコマンドの詳しい説明 Feb 21, 2024 pm 10:33 PM

Linuxのcurlコマンドの詳しい説明

Promise.resolve() について詳しく見る Promise.resolve() について詳しく見る Feb 18, 2024 pm 07:13 PM

Promise.resolve() について詳しく見る

numpyのバージョンクエリメソッドの詳細説明 numpyのバージョンクエリメソッドの詳細説明 Jan 19, 2024 am 08:20 AM

numpyのバージョンクエリメソッドの詳細説明

See all articles