如何在 Angular 中使用懒加载路由

这篇具有很好参考价值的文章主要介绍了如何在 Angular 中使用懒加载路由。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介

延迟加载 是一种限制加载用户当前需要的模块的方法。这可以提高应用程序的性能并减小初始捆绑包大小。

默认情况下,Angular 使用 急切加载 来加载模块。这意味着在应用程序运行之前必须加载所有模块。虽然这对许多用例可能是足够的,但在某些情况下,这种加载时间开始影响性能。

在本文中,您将在 Angular 应用程序中使用延迟加载路由。

先决条件

要完成本教程,您需要:

  • 本地安装 Node.js,您可以按照《如何安装 Node.js 并创建本地开发环境》中的步骤进行操作。
  • 一些设置 Angular 项目的熟悉程度。

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

步骤 1 – 设置项目

延迟加载的路由需要位于根应用程序模块之外。您将希望将延迟加载的功能放在功能模块中。

首先,让我们使用 Angular CLI 创建一个带有 Angular Router 的新项目:

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

然后导航到新项目目录:

cd angular-lazy-loading-example

让我们创建一个新的功能模块:

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

现在让我们还在我们的 shop 功能模块中创建 3 个组件:

第一个将是 cart 组件:

ng generate component shop/cart

第二个将是 checkout 组件:

ng generate component shop/checkout

第三个将是 confirm 组件:

ng generate component shop/confirm

所有三个组件将位于 shop 目录中。

此时,您应该有一个带有 shop 模块和 3 个组件的新 Angular 项目。

步骤 2 – 使用 loadChildren

在您的主路由配置中,您将希望执行类似以下操作:

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 期望一个使用动态导入语法来导入您的延迟加载模块的函数,只有在需要时才会导入。动态导入是基于 Promise 的,并且可以让您访问模块,其中可以调用模块的类。

步骤 3 – 在功能模块中设置路由配置

现在,剩下要做的就是配置特定于功能模块的路由。

以下是一个示例:

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 { }

现在,您可以使用 routerLink 指令导航到 /shop/shop/checkout/shop/confirm,并且在首次导航到这些路径时将加载模块。

在终端中,启动服务器:

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 字节

                      | 初始总计     |   2.58 MB

延迟块文件           | 名称         |      大小
src_app_shop_shop_module_ts.js | -             |  10.62 kB

接下来,使用浏览器访问 localhost:4200

通过打开浏览器的 DevTools 并查看网络选项卡来验证延迟加载是否起作用。当应用程序最初在应用程序根路径加载时,您不应该观察到延迟块文件。当您导航到 /shop 等路径时,您应该观察到 src_app_shop_shop_module_ts.js

您的应用程序现在支持延迟加载。

结论

在本文中,您学习了如何在 Angular 应用程序中使用惰性加载路由。

继续学习测试带有依赖项的组件、测试服务以及使用模拟、存根和间谍。

您也可以参考官方文档,获取更多关于惰性加载的信息。文章来源地址https://www.toymoban.com/news/detail-829002.html

到了这里,关于如何在 Angular 中使用懒加载路由的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何在 Angular 中使用 ng2-charts 来使用 Chart.js

    介绍 Chart.js 是一个流行的 JavaScript 图表库, ng2-charts 是 Angular 2+ 的一个包装器,用于在 Angular 中集成 Chart.js。 在本教程中,您将使用 Chart.js 和 ng2-charts 在 Angular 应用程序中创建示例图表。 要完成本教程,您需要: 本地安装了 Node.js,您可以按照《如何安装 Node.js 并创建本地

    2024年02月20日
    浏览(34)
  • 2023年最佳JavaScript框架:React、Vue、Angular和Node.js的比较

    🎉欢迎来到Java学习路线专栏~探索2023年最佳JavaScript框架:React、Vue、Angular和Node.js的比较 ☆* o(≧▽≦)o *☆嗨~我是IT·陈寒🍹 ✨博客主页:IT·陈寒的博客 🎈该系列文章专栏:Java学习路线 📜其他专栏:Java学习路线 Java面试技巧 Java实战项目 AIGC人工智能 🍹文章作者技术和水

    2024年02月11日
    浏览(38)
  • 大型医院云HIS系统:采用前后端分离架构,前端由Angular语言、JavaScript开发;后端使用Java语言开发 融合B/S版电子病历系统

    一套医院云his系统源码 采用前后端分离架构,前端由Angular语言、JavaScript开发;后端使用Java语言开发。融合B/S版电子病历系统,支持电子病历四级,HIS与电子病历系统均拥有自主知识产权。 文末卡片获取联系! 基于云计算技术的B/S架构的医院管理系统(简称云HIS),采用前后

    2024年02月03日
    浏览(35)
  • 前端框架之争:Vue.js vs. React.js vs. Angular

    🎉欢迎来到Web前端专栏~前端框架之争:Vue.js vs. React.js vs. Angular ☆* o(≧▽≦)o *☆嗨~我是IT·陈寒🍹 ✨博客主页:IT·陈寒的博客 🎈该系列文章专栏:架构设计 📜其他专栏:Java学习路线 Java面试技巧 Java实战项目 AIGC人工智能 数据结构学习 🍹文章作者技术和水平有限,如果

    2024年02月07日
    浏览(82)
  • Angular16的路由守卫基础使用

    使用 ng generate guard /guard/login 命令生成guard文件 因新版Angular取消了CanActivate的使用,改用CanActivateFn,因此使用router跳转需要通过inject的方式导入。 在路由文件中,对需要守卫的路由地址配置guard

    2024年02月12日
    浏览(24)
  • angular框架简介基础与使用(全文2w8字)前端框架angular

    本文的所有内容,可以在我的博客上看到,下面是地址。建议去博客看,因为csdn的这篇图片我没上传。 可以转载,但请注明出处 我的博客—点击跳转 https://numb.run Angular是谷歌开发的一款开源的web前端框架,诞生于2009年,由Misko Hevery 等人创建,后为Google所收购。是一款优秀

    2024年02月02日
    浏览(32)
  • 一文搞定:前端如何选择Angular、React和Vue三大主流框架

    在前端开发领域,目前最流行的三个框架是Angular、React和Vue.js。这些框架非常高效,并且它们各自具有一系列的优缺点。 在AI辅助编程工具 CodeGeeX 的后台中,也看到有大量的前端开发者使用这三个框架,并且Vue的使用率在 CodeGeeX 的后台中,持续走高。接下来我们针对Angular、

    2024年02月09日
    浏览(45)
  • Angular 路由器:使用 RouterLink、Navigate 或 NavigateByUrl 进行导航

    介绍 在 Angular 中, RouterLink 是一个用于以声明方式导航到不同路由的指令。 Router.navigate 和 Router.navigateByURL 是 Router 类中可用的两种方法,用于在组件类中以命令方式导航。 让我们来探讨如何使用 RouterLink 、 Router.navigate 和 Router.navigateByURL 。 HTML 中的典型链接如下所示: 这

    2024年02月21日
    浏览(34)
  • 如何在 Angular 中使用环境变量

    简介 如果你正在构建一个使用 API 的应用程序,你会想在开发过程中使用测试环境的 API 密钥,而在生产环境中使用生产环境的 API 密钥。在 Angular 中,你可以通过 environment.ts 文件创建环境变量。 在本教程中,你将学习如何在 Angular 中使用环境变量。 如果你想跟着本文操作,

    2024年02月20日
    浏览(39)
  • angular前端环境搭建、安装angular

    1.下载node.js安装包(要求node版本大于12.20) Node.js官方网站 : https://nodejs.org/en/ 进入官网后,当前页面下载的是最新版本,如需要下载历史版本,点击红框标注的其他下载,在进入的新的页面底部,选择红框标准的先前版本,然后下载相应的版本,在跳转的页面下载win64的版

    2024年02月03日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包