欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

在 Angular 中使用懶加載路由的方法

 更新時間:2024年02月19日 11:33:40   作者:白如意i  
延遲加載是一種限制加載用戶當前需要的模塊的方法,這可以提高應(yīng)用程序的性能并減小初始捆綁包大小,在本文中,您學習了如何在 Angular 應(yīng)用程序中使用惰性加載路由,本文分步驟講解的非常詳細,感興趣的朋友一起看看吧

簡介

延遲加載 是一種限制加載用戶當前需要的模塊的方法。這可以提高應(yīng)用程序的性能并減小初始捆綁包大小。

默認情況下,Angular 使用 急切加載 來加載模塊。這意味著在應(yīng)用程序運行之前必須加載所有模塊。雖然這對許多用例可能是足夠的,但在某些情況下,這種加載時間開始影響性能。

在本文中,您將在 Angular 應(yīng)用程序中使用延遲加載路由。

先決條件

要完成本教程,您需要:

  • 本地安裝 Node.js,您可以按照《如何安裝 Node.js 并創(chuàng)建本地開發(fā)環(huán)境》中的步驟進行操作。
  • 一些設(shè)置 Angular 項目的熟悉程度。

本教程已使用 Node v16.4.0、npm v7.19.0、@angular/core v12.1.0 和 @angular/router v12.1.0 進行驗證。

步驟 1 – 設(shè)置項目

延遲加載的路由需要位于根應(yīng)用程序模塊之外。您將希望將延遲加載的功能放在功能模塊中。

首先,讓我們使用 Angular CLI 創(chuàng)建一個帶有 Angular Router 的新項目:

ng new angular-lazy-loading-example --routing --style=css --skip-tests

然后導航到新項目目錄:

cd angular-lazy-loading-example

讓我們創(chuàng)建一個新的功能模塊:

ng generate module shop --route shop --module app.module

現(xiàn)在讓我們還在我們的 shop 功能模塊中創(chuàng)建 3 個組件:

第一個將是 cart 組件:

ng generate component shop/cart

第二個將是 checkout 組件:

ng generate component shop/checkout

第三個將是 confirm 組件:

ng generate component shop/confirm

所有三個組件將位于 shop 目錄中。

此時,您應(yīng)該有一個帶有 shop 模塊和 3 個組件的新 Angular 項目。

步驟 2 – 使用 loadChildren

在您的主路由配置中,您將希望執(zhí)行類似以下操作:

import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
const routes: Routes = [
  { path: 'shop', loadChildren: () => import('./shop/shop.module').then(m => m.ShopModule) },
];
@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }

新的 Angular 8 中,loadChildren 期望一個使用動態(tài)導入語法來導入您的延遲加載模塊的函數(shù),只有在需要時才會導入。動態(tài)導入是基于 Promise 的,并且可以讓您訪問模塊,其中可以調(diào)用模塊的類。

步驟 3 – 在功能模塊中設(shè)置路由配置

現(xiàn)在,剩下要做的就是配置特定于功能模塊的路由。

以下是一個示例:

import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { CartComponent } from './cart/cart.component';
import { CheckoutComponent } from './checkout/checkout.component';
import { ConfirmComponent } from './confirm/confirm.component';
const routes: Routes = [
  { path: '', component: CartComponent },
  { path: 'checkout', component: CheckoutComponent },
  { path: 'confirm', component: ConfirmComponent },
];
@NgModule({
  imports: [RouterModule.forChild(routes)],
  exports: [RouterModule]
})
export class ShopRoutingModule { }

最后,在功能模塊本身中,您將使用 RouterModuleforChild 方法而不是 forRoot 來包含您的路由:

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { ShopRoutingModule } from './shop-routing.module';
import { ShopComponent } from './shop.component';
import { CartComponent } from './cart/cart.component';
import { CheckoutComponent } from './checkout/checkout.component';
import { ConfirmComponent } from './confirm/confirm.component';
@NgModule({
  declarations: [
    ShopComponent,
    CartComponent,
    CheckoutComponent,
    ConfirmComponent,
  ],
  imports: [
    CommonModule,
    ShopRoutingModule
  ]
})
export class ShopModule { }

現(xiàn)在,您可以使用 routerLink 指令導航到 /shop/shop/checkout/shop/confirm,并且在首次導航到這些路徑時將加載模塊。

在終端中,啟動服務(wù)器:

ng serve

這將生成一個 main.js 文件和一個 src_app_shop_shop_module_ts.js 文件:

初始塊文件            | 名稱         |      大小
vendor.js            | vendor       |   2.38 MB
polyfills.js         | polyfills    | 128.58 kB
main.js              | main         |  57.18 kB
runtime.js           | runtime      |  12.55 kB
styles.css           | styles       | 119 字節(jié)
                      | 初始總計     |   2.58 MB
延遲塊文件           | 名稱         |      大小
src_app_shop_shop_module_ts.js | -             |  10.62 kB

接下來,使用瀏覽器訪問 localhost:4200。

通過打開瀏覽器的 DevTools 并查看網(wǎng)絡(luò)選項卡來驗證延遲加載是否起作用。當應(yīng)用程序最初在應(yīng)用程序根路徑加載時,您不應(yīng)該觀察到延遲塊文件。當您導航到 /shop 等路徑時,您應(yīng)該觀察到 src_app_shop_shop_module_ts.js

您的應(yīng)用程序現(xiàn)在支持延遲加載。

結(jié)論

在本文中,您學習了如何在 Angular 應(yīng)用程序中使用惰性加載路由。

繼續(xù)學習測試帶有依賴項的組件、測試服務(wù)以及使用模擬、存根和間諜。

您也可以參考官方文檔,獲取更多關(guān)于惰性加載的信息。

相關(guān)文章

  • AngularJS過濾器詳解及示例代碼

    AngularJS過濾器詳解及示例代碼

    本文主要介紹AngularJS過濾器,這里整理了詳細的資料和提供了示例代碼及實例效果圖,有興趣的小伙伴可以參考下
    2016-08-08
  • Angular4表單驗證代碼詳解

    Angular4表單驗證代碼詳解

    這篇文章主要介紹了Angular4表單驗證代碼詳解 ,需要的朋友可以參考下
    2017-09-09
  • angular動態(tài)刪除ng-repaeat添加的dom節(jié)點的方法

    angular動態(tài)刪除ng-repaeat添加的dom節(jié)點的方法

    本篇文章主要介紹了angular動態(tài)刪除ng-repaeat添加的dom節(jié)點的方法,非常具有實用價值,需要的朋友可以參考下
    2017-07-07
  • Angular.js去除頁面中顯示的空行方法示例

    Angular.js去除頁面中顯示的空行方法示例

    這篇文章主要介紹了Angular.js去除頁面中顯示的空行方法,文中給出了詳細的示例代碼供大家參考學習,相信對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。
    2017-03-03
  • Angular2中constructor和ngOninit的使用講解

    Angular2中constructor和ngOninit的使用講解

    這篇文章主要介紹了Angular2中constructor和ngOninit的使用講解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • 使用Raygun來自動追蹤AngularJS中的異常

    使用Raygun來自動追蹤AngularJS中的異常

    這篇文章主要介紹了使用Raygun來自動追蹤AngularJS中的異常,AngularJS是一款高人氣的JavaScript庫,需要的朋友可以參考下
    2015-06-06
  • 淺談angular4實際項目搭建總結(jié)

    淺談angular4實際項目搭建總結(jié)

    本篇文章主要介紹了淺談angular4實際項目搭建總結(jié),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • Angular2利用組件與指令實現(xiàn)圖片輪播組件

    Angular2利用組件與指令實現(xiàn)圖片輪播組件

    這篇文章主要給大家介紹了Angular2中組件與指令的一個小實踐,利用組件和指令實現(xiàn)一個圖片輪播組件的相關(guān)資料,文中給出了詳細的介紹和示例代碼,需要的朋友可以參考學習,下面來一起看看吧。
    2017-03-03
  • Angularjs中使用layDate日期控件示例

    Angularjs中使用layDate日期控件示例

    本篇文章主要介紹了Angularjs中使用layDate日期控件,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • AngularJS打開頁面隱藏顯示表達式用法示例

    AngularJS打開頁面隱藏顯示表達式用法示例

    這篇文章主要介紹了AngularJS打開頁面隱藏顯示表達式用法,結(jié)合實例形式分析了AngularJS中打開頁面隱藏顯示表達式相關(guān)命令使用技巧,需要的朋友可以參考下
    2016-12-12

最新評論