写点什么

Angular 18 引入了 Zoneless 变更检测

Agazi Mekonnen

  • 2024-07-16
    北京
  • 本文字数:1417 字

    阅读完需:约 5 分钟

大小:450.71K时长:02:33
Angular 18 引入了 Zoneless 变更检测

Angular 最近发布了 Angular 18,引入了 zoneless(无 zone.js)变更检测、新的开发者中心、多个特性的稳定版本以及服务器端渲染的改进等。该版本的亮点是提供了稳定的新 API,解决了常见的开发者请求,并增强了整体的开发者体验。


Angular 18 引入了对 zoneless 变更检测的实验性支持,消除了对 zone.js 的需求。该方法旨在通过减少变更检测的周期数以及提供更易读的堆栈跟踪来提高性能。开发人员可以通过在其应用程序的引导程序中添加如下的提供程序来尝试实验性的 zoneless 支持:


bootstrapApplication(App, {  providers: [    provideExperimentalZonelessChangeDetection()  ]});
复制代码


谷歌高级软件工程师 Alex Rickabaugh 在 X(前身名为 Twitter)上发表的推文谈到了在 Angular 18 中支持 zoneless 的重要性:


我对这个版本的发布感到特别的自豪。我们面临的最大挑战是在保持 Angular 的稳定性和可靠性的同时跟上现代 Web 的发展。借助 v18,我们朝着没有 zone.js 的未来迈出了第一步。


Angular.dev 是 Angular 文档的官方网站。其中包含了动手入门之旅、互动游乐场、更新的指南和简化的导航。所有对 angular.io 的请求现在都重定向到了 angular.dev。


在 Angular 18 中有几个特性已经达到了稳定状态。之前处于实验性支持状态的 Material 3 组件现已稳定,并包括了新的主题和文档。旨在改进 Core Web Vitals 的可延迟视图现在处于稳定状态,使开发人员能够延迟加载某些视图。新的内置控制流语法和特性也已达到稳定状态,可提供改进的性能和人效学的优势。


Angular 18 通过 i18n hydration 支持、更好的调试和由谷歌事件调度库提供的事件回放增强了服务器端渲染(SSR)。这些改进旨在确保服务器端渲染体验更加健壮并且更具交互性。


现在可以在 Angular 18 中为 ng-content 指定默认的内容。这允许开发人员在他们的组件中提供回退内容。例如:

@Component({  selector: 'app-profile',  template: `    Hello     Unknown user  `,})export class Profile {}
复制代码


使用组件:


<app-profile>  <span class="greeting">Good morning </span></app-profile>
复制代码


输出将会是:


<span class="greeting">Good morning </span>Unknown user
复制代码


Angular 表单现在公开了一个名为 events 的属性,允许开发人员订阅表单控件的事件流。例如:


const nameControl = new FormControl('name', Validators.required);nameControl.events.subscribe(event => {  // 处理单个事件});
复制代码


此外,Angular 18 通过允许使用返回动态重定向路由的函数,在路由重定向方面提供了更高的灵活性。例如:


const routes: Routes = [  { path: "first-component", component: FirstComponent },  {    path: "old-user-page",    redirectTo: ({ queryParams }) => {      const errorHandler = inject(ErrorHandler);      const userIdParam = queryParams['userId'];      if (userIdParam !== undefined) {        return `/user/${userIdParam}`;      } else {        errorHandler.handleError(new Error('Attempted navigation to user page without user ID.'));        return `/not-found`;      }    },  },  { path: "user/:userId", component: OtherComponent },];
复制代码


最后,Angular 18 更新了对 TypeScript 5.4 的依赖,使开发人员能够利用最新的 TypeScript 特性和改进。


原文链接:


https://www.infoq.com/news/2024/07/angular-18-introduces-zoneless/


声明:本文由 InfoQ 翻译,未经许可禁止转载。

2024-07-16 10:006398

评论

发布
暂无评论
发现更多内容

TempDB 的使用和性能问题

悟空聊架构

sql 性能调优 6月日更 TempDB

Java语言概述以及环境搭建

若尘

java编程 6月日更

SpringCloud Gateway 路由数量对性能的影响研究

黄仲辉

性能优化 动态路由 SpringCloud Gateway JMH性能基准测试

【通俗易懂】虚拟DOM,如何更高效DIFF

蛋先生DX

Diff 6月日更

五种服务部署升级策略,你也许会用的到

架构精进之路

6月日更 服务升级

【音视频】基于声网的多人视频通话功能建设

轻口味

android 音视频 IM 声网

【21-5】Grafana 时间Panel 如何使用

耳东@Erdong

Grafana 6月日更 panel clock

redis分布式锁原理

Skysper

redis 分布式锁

HTTP 长连接和短连接

看山

TCP/IP HTTP协议 6月日更

JAVA设计模式系列--单例模式

加百利

Java 后端 设计模式 单例模式 6月日更

架构师实战营 模块六作业(拆分电商系统为微服务)

代廉洁

架构实战营

【LeetCode】第一个错误的版本Java题解

Albert

算法 LeetCode 6月日更

一文带你深入了解 Java 字节码

mghio

技术 后端 Java 25 周年 基础

架构师实战营 模块六总结

代廉洁

网络攻防学习笔记 Day43

穿过生命散发芬芳

网络攻防 6月日更

策略模式怎么玩?

卢卡多多

设计模式 策略模式 6月日更

HarmonyOS的万里长征和万里长城

脑极体

中国数字化转型为全球带来机遇

CECBC

【Vue2.x 源码学习】第十二篇 - 生成 ast 语法树-流程说明

Brave

源码 vue2 6月日更

Scrum Patterns : MetaScrum(译)

Bruce Talk

敏捷开发 译文 Agile Scrum Patterns

【Flutter 专题】105 图解自定义 ACEPageMenu 滑动菜单 (一)

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 6月日更

话题讨论|如何看待腾讯试点强制6点下班

石云升

话题讨论 加班文化 6月日更

SpringCloud Gateway 路由转发性能优化

黄仲辉

性能优化 动态路由 SpringCloud Gateway JMH性能基准测试

贪心算法最优装载问题(Java代码实现)

若尘

数据结构 贪心算法 6月日更

架构实战营-作业六

大可

未来,能源枯竭可以逆转吗?

白洞计划

未来,能源枯竭可以逆转吗?

脑极体

并发王者课-黄金2:行稳致远-如何让你的线程免于死锁

MetaThoughts

Java 多线程 并发

Python——数值列表

在即

6月日更

模块六作业 - 拆分电商系统为微服务

张大彪

Single-Spa构建第一个微前端项目

devpoint

Vue 大前端 6月日更

Angular 18 引入了 Zoneless 变更检测_后端_InfoQ精选文章