首页 > 其他分享 >【Angular】Angular中的急加载、惰性加载、预加载

【Angular】Angular中的急加载、惰性加载、预加载

时间:2023-11-13 22:45:22浏览次数:26  
标签:country 应用程序 惰性 模块 Angular 加载

急加载(Eager loading)

import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { CountryComponent }  from './country.component';
import { CountryListComponent }  from './country-list/country.list.component';

const countryRoutes: Routes = [
    { 
      path: 'country',
          component: CountryComponent,
          children: [ 
        {
          path: 'country-list',
          component: CountryListComponent
        }  
      ]
    }   
];

@NgModule({
  imports: [ RouterModule.forChild(countryRoutes) ],
  exports: [ RouterModule ]
})
export class CountryRoutingModule { } 

当模块配置为急加载时,其在应用启动前就会被加载。

要急加载模块,需要在AppModule@NgModule装饰器中,将该模块放入imports数组。

当一个模块配置为急加载时,在模块加载时会加载所有importedmodulescomponentsservicescustom pipes等。

模块们会按照其在imports中的顺序进行加载。

急加载对于小型应用程序是有好处的,因为在应用程序的第一次加载时,所有模块都被加载,所有需要的依赖关系都得到了解决。现在对应用程序的后续访问将更快。

惰性加载(Lazy Loading)

const routes: Routes = [
   {
    path: 'country',
        loadChildren: () => import('./country/country.module').then(mod => mod.CountryModule)
   },
   ------
]; 

使用loadChildren特性来配置,模块均是按需加载的,也是异步加载的。

不能在AppModule中导入,否则将会被视为急加载。

当应用程序的大小不断增长时,惰性加载非常有用。在惰性加载中,特性模块将按需加载,因此应用程序启动将更快。

预加载(Preloading)

@NgModule({
  imports: [ 
      RouterModule.forRoot(routes,
      {
        preloadingStrategy: PreloadAllModules
      }) 
  ],
  ------
})
export class AppRoutingModule { }

使用 loadChildren 属性加载它,并在 RouterModule.forRoot 中配置 preloadingStrategy 属性。

在预加载中,模块在后台异步加载,模块在应用程序启动后才开始加载。

应用程序启动后,AppModule中的模块被急加载,在此之后,才会加载配置为预加载的模块。

不能在AppModule中导入,否则将会被视为急加载。

当我们将 Angular PreloadAllModule 策略分配给 preloadingStrategy 属性时,那么所有配置了 loadChildren 的功能模块都会被预加载。

为了配置预加载特性模块,我们首先将它们配置为惰性加载,然后使用 Angular 内置 PreloadAllModule 策略,我们可以将所有延迟加载加载到预加载模块中。使用 PreloadAllModule 策略,将预先加载 loadChildren 属性配置的所有模块。由 loadChildren 属性配置的模块可以是惰性加载的,也可以是预加载的,但不能同时加载两者。为了只预加载选择性模块,我们需要使用自定义预加载策略。

一旦我们配置了 PreloadAllModule 策略,然后在急切加载模块之后,Angular 搜索适用于预加载的模块。LoadChildren 配置的模块将适用于预加载。我们可以创建自定义预加载策略。为此,我们需要通过实现 Angular PreloadingStrategy 接口并覆盖其 preload 方法来创建服务,然后在路由模块中使用 preloadingStrategy 属性配置此服务。为了选择自定义预加载的模块,我们需要在路由配置中使用 data 属性。数据可以配置为数据: { preload: true }用于选择性特征模块预加载。

预加载对于加载那些在加载应用程序之后很可能被用户访问的特性是非常有用的。

我们应该只预加载那些在应用程序启动后才会被用户访问的特性,而静息特性模块可以惰性加载。通过这种方式,我们可以提高我们的大型应用程序的性能。

参考:

标签:country,应用程序,惰性,模块,Angular,加载
From: https://www.cnblogs.com/lhjc/p/17830499.html

相关文章

  • Angular 服务器端渲染的静态 HTML 变为客户端的动态应用的过程
    首先,让我们先了解一下Angular服务器端渲染(SSR)的工作原理。当你的Angular应用启用服务器端渲染后,用户在浏览器中请求页面时,服务器会预先渲染出HTML,并且将其发送到客户端。这样做的优点是可以改善首屏加载时间,提升SEO效果,因为搜索引擎可以抓取到预渲染的HTML内容。那......
  • Angular 应用启用服务器端渲染后 Ngrx store 和 re-hydration 的交互关系
    在Angular启用服务器端渲染(Server-SideRendering,SSR)后,当浏览器端访问这个Angular应用时,会涉及到一系列过程,包括初始化、数据获取、hydration(重新注水)和与NgRxStore之间的交互。下面我将详细介绍这些步骤:初始化应用:用户在浏览器中输入应用的URL。服务器端处理请求,生......
  • Angular 服务器端渲染应用 re-hydration 过程详解
    当使用Angular启用服务器端渲染(Server-SideRendering,以下简称SSR)时,应用程序的工作方式发生了显著变化。这使得Angular应用更加友好,不仅对搜索引擎爬虫更友好,还有助于改善应用的性能和加载时间。在本文中,我们将详细介绍在浏览器端访问启用SSR的Angular应用时背后发生的事情,特别侧......
  • 什么是 Angular 应用的 re-hydration 过程
    在讨论Angular的服务器端渲染(Server-SideRendering,简称SSR)以及重水合(Re-hydration)的过程之前,我们首先需要理解一些基本概念。Angular是一个流行的前端JavaScript框架,能够用于开发单页应用(SPA)。SPA在浏览器中加载一次,之后所有的用户交互都通过JavaScript来处理,这样能提......
  • 如何用Angular or Vue 来 实现Dynamics 365 WebResource 开发
    第一步:构建Angular项目,可以使用VisualStudio的项目模版创建(含.netCore相关)或者使用Angularcli创建,我习惯使用angularcli 执行以下命令:ngnew项目名称,回车可以选择含路由,style是CSSorLESS根据所需选取,稍等几分钟(取决于网络,会download......
  • 如何使用React/JSX在样式加载完成之前等待React的加载?
    在React中,可以使用加载状态来等待样式加载完成之后再渲染React组件。以下是一种常见的方法:创建一个加载状态isLoading并将其初始化为true。在componentDidMount生命周期方法中使用setTimeout函数来模拟样式加载的延迟。在延迟结束后,将isLoading状态设置为false。在渲染方法中,使用条......
  • vue封装一个加载过程
    app.vue<template><divclass="main"><divclass="box"v-isLoging="isLoged"><ul><liv-for="iteminlist":key="item.id"class="news">......
  • 一个操作系统的设计与实现——第5章 加载内核
    一直以来,我们都在使用汇编语言对MBR编程,但对于操作系统这样的复杂程序来说,使用汇编语言是比较困难的。本章将实现操作系统内核的加载与进入。5.1读硬盘的实现原理操作系统存储于硬盘中,现在需要将其读出至内存。想要读硬盘,就需要依次进行以下操作:设定读取的扇区数设定起始扇......
  • office ppt word excel 冷启动去首屏加载动画
    有没有人知道这么解决冷启动慢的问题吗,装完重启后打开都要好几秒匿名2023-5-2718:56:59回复GoogleChrome102.0.0.0GoogleChrome102.0.0.0Windows10x64EditionWindows10x64Edition找到方法了。改注册表计算机\HKEY_CLASSES_ROOT\Excel.Sheet.12\shell\Open\comm......
  • OpenGL 模型加载详解
    1.Assimp目前为止,我们已经可以绘制一个物体,并添加不同的光照效果了。但是我们的顶点数据太过简单,只能绘制简单的立方体。但是房子汽车这种不规则的形状我们的顶点数据就很难定制了。索性,这部分并不需要我们苦逼的开发人员去考虑。成熟的3D建模工具可以将设计师设计的模型导出模......