首页 > 其他分享 >变化检测从 Angular zonejs) 到 Angular (provideExperimentalZonelessChangeDetection) 的演变

变化检测从 Angular zonejs) 到 Angular (provideExperimentalZonelessChangeDetection) 的演变

时间:2024-09-22 09:02:08浏览次数:7  
标签:变化检测 zone 更改 检测 应用程序 js provideExperimentalZonelessChangeDetection Angular

更改检测是 angular 的一个基本方面,负责识别和更新 dom 中因数据修改或用户交互而发生更改的部分。此过程可确保 ui 与底层数据保持一致,从而增强用户体验和应用程序性能。 zone.js 的作用从历史上看,angular 一直依赖 zone.js 来实现其变更检测机制。 zone.js 是一个拦截异步操作的 javascript 库,允许 angular 监视更改并相应地触发更新。但是,包含 zone.js 可能会增加应用程序的开销,特别是在异步活动频繁的场景中。 变更检测策略angular 提供了两种主要的变化检测策略:默认: 在每个生命周期钩子之后触发更改检测,例如 ngoninit 或 ngafterviewinit。这种策略很简单,但可能会导致不必要的 dom 更新,尤其是在大型应用程序中。@component({ selector: 'app-my-component', template: ` <p>{{ message }}</p> `})export class mycomponent { message = 'hello, world!';}登录后复制这种策略更容易实现,因为 angular 会自动处理大部分变化检测逻辑。 这种变更检测策略的最大挑战是它会导致不必要的 dom 更新,这对于大型应用程序至关重要。 onpush: 仅当输入属性或异步可观察值发生更改时才会触发更改检测。此策略对于数据更新频繁的复杂组件性能更高,但需要更多的手动管理。@component({ selector: 'app-my-component', template: ` <p>{{ message }}</p> `, changedetection: changedetectionstrategy.onpush})export class mycomponent { message = 'hello, world!';} 登录后复制虽然 onpush 变更检测策略最大限度地减少了不必要的 dom 操作,但 onpush 变更策略的最大挑战是开发人员必须进行更多的手动管理并手动触发变更。在某些情况下,例如当数据间接更改或使用可变对象时,他们必须使用changedetectorref.detectchanges()显式处理更改检测。 angular 18 和混合变化检测:无区域方法为了解决与 zone.js 相关的挑战,angular 18 引入了一项称为混合变更检测的实验性功能。这种方法旨在完全消除 zone.js,使用新的更改检测机制来检测更改并操作 dom。 启用混合变更检测:要启用混合更改检测,您可以使用以下代码:bootstrapapplication(rootcmp,{ providers: [provideexperimentalzonelesschangedetection()] });登录后复制这将在以下场景中触发更改检测:信号已更新。changedetectorref.markforcheck() 被调用。通过 asyncpipe 订阅的 observable 会收到一个新值。组件被附加或分离。已设置输入。启用混合更改检测后,您可以安全地从应用程序的 polyfill 中删除 zone.js。 "polyfills": [ "zone.js" //remove this line ],登录后复制 混合变化检测的好处性能提高:消除 zone.js 可以减少开销,从而提高性能,特别是在具有大量异步操作的应用程序中。增强的开发人员体验:取消手动更改检测简化了开发并减少了错误的可能性。较小的应用程序大小:zone.js 通常会增加大约 13kb 的应用程序大小。删除它可能会导致包变小。以上就是变化检测从 Angular zonejs) 到 Angular (provideExperimentalZonelessChangeDetection) 的演变的详细内容,更多请关注我的其它相关文章!

标签:变化检测,zone,更改,检测,应用程序,js,provideExperimentalZonelessChangeDetection,Angular
From: https://www.cnblogs.com/aow054/p/18424871

相关文章

  • 前端框架Vue、React、Angular、Svelte对比
    编辑在对比React、Vue.js、Angular和Svelte时,除了在高层次的特性上有显著差异,它们在核心设计理念和底层实现机制上也有明显的不同。为了清晰地理解这些框架,我们可以从以下几个方面来分析它们的核心不同点和底层不同点。1.框架类型和设计哲学React:类型:UI库(视图层)设计哲学:React......
  • 前端框架Vue、React、Angular、Svelte对比
    在对比React、Vue.js、Angular和Svelte时,除了在高层次的特性上有显著差异,它们在核心设计理念和底层实现机制上也有明显的不同。为了清晰地理解这些框架,我们可以从以下几个方面来分析它们的核心不同点和底层不同点。1.框架类型和设计哲学React:类型:UI库(视图层)设计哲......
  • DeshiJS 与 Vuejs、Angular 和 React:轻量级挑战者
    DeshiJS是一个新的轻量级JavaScript框架,旨在快速、直观且可扩展。**DeshiJS**只有10KB,专注于为开发人员提供最小的反应式核心,使其成为注重性能和简单性的中小型项目的理想选择。让我们来看看它与重量级的Vue.js、Angular和React相比如何。DeshiJS这是更新的博客文章,其中......
  • 【Git】Git Commit Angular规范详解
    在团队协作开发中,保持Git提交记录的一致性和清晰性对于维护项目的可读性和历史追溯至关重要。Angular团队提出了一套详细的CommitMessage格式化规范,旨在解决这一问题。下面将详细介绍如何遵循Angular规范来编写Git提交信息,并探讨其带来的好处。Angular规范的核心要素Angu......
  • .NET 7+Angular 4 轻量级新零售进销存系统
    前言给大家推荐一个专为新零售快消行业打造了一套高效的进销存管理系统。系统不仅具备强大的库存管理功能,还集成了高性能的轻量级POS解决方案,确保页面加载速度极快,提供良好的用户体验。项目介绍Dorisoy.POS是一款基于.NET7和Angular4开发的新零售快消进销存管理系统......
  • Angular Material 18+ 高级教程 – Datepicker の Calendar & Custom DateAdapter (Te
    前言本篇只会教AngularMaterialDatepicker里最关键的组件--Calendar组件。还有如何自定义DateAdapter,让Calendar支持 TC39Temporal。有兴趣想学完整Datepicker的人,请移步官网。只对Calendar组件和自定义DateAdapter感兴趣的,留下!Let'sstart......
  • Angular 导出Excel
    在Angular中导出Excel文件,可以使用第三方库如xlsx来处理Excel的生成和导出操作。以下是一个简单的步骤来实现从Angular项目中导出Excel文件。1.安装xlsx和file-saver在项目根目录下运行以下命令来安装所需的库:npminstallxlsxfile-saver--save2.在组件中......
  • AngularJS进阶(十五)Cookie ‘data‘ possibly not set or overflowed because it was
    Cookie ‘data’ possibly not set or overflowedbecause it was too large (5287 > 4096 bytes)!注:请点击此处进行充电!故事起源项目开发过程中遇到以上问题,刚开始以为只是个警告,没太在意。后来发现直接影响到了程序的执行效果。果断寻找解决方法。问题......
  • AngularJS基于模块化的MVC实现
    AngularJS基于模块化的MVC实现1<!DOCTYPEhtml>2<html>3<head>4<metacharset="UTF-8">5<title>AngularJS基于模块化的MVC实现</title>6<scripttype="text/javascript"src=".......
  • 笔记 | Angular 实现 keep-alive (路由复用)
    Angular的路由复用策略(RouteReuseStrategy)是一种用于优化路由跳转性能和提高用户体验的机制。通过实现RouteReuseStrategy接口,后可以自定义路由的复用行为,避免不必要的组件销毁和重建,同时保持组件的状态。以下是对Angular路由复用策略的详细介绍:一、基本概念RouteReuseStrateg......