写点什么

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:006389

评论

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

Fil矿机怎么购买?Fil矿机哪里买?

fil矿机怎么购买 fil矿机 ipfs矿机

Liunx之chown命令

入门小站

Linux

模块一作业

A先生

golang解析---进程,线程,协程

en

线程 进程 协程 Go 语言 goroutine

微服务架构服务容错设计分析

慕枫技术笔记

架构 微服务 后端

模块-1 微信业务架构图 和 备选方案

小遵

项目管理实践篇(一):技术人如何做好风险把控

后台技术汇

项目管理

JDBC数据库链接的那些事

卢卡多多

JDBC 7月日更

模块2作业

Tina

2021年网络安全市场全景图,看看都有哪些企业吧!

郑州埃文科技

北鲲云计算,用技术成就生物科学领域发展

北鲲云

模块-6 拆分电商系统为微服务

小遵

一文搞懂二分查找面试

泽睿

算法 二分查找

分布式事务最经典的七种解决方案

叶东富

数据库 分布式事务 微服务 TCC Go 语言

架构实战营模块二作业

王晓宇

八位阿里大牛耗时三年总结出Java面试复盘手册!带你实现逆风翻盘

白亦杨

Java 编程 程序员

模块二作业

A先生

Discourse 调整使用不同的表情符号

HoneyMoose

金九银十马上要来了,我熬夜整理10 万字节详细面试笔记(带完整目录) 良心分享

Java 编程 程序员 架构 面试

架构实战营 模块二 作业

一雄

作业 架构实战营 模块二

【Flutter 专题】84 图解自定义 ACEWave 波浪 Widget (二)

阿策小和尚

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

Spark :: 源代码(前传)—Spark多线程 :: NettyRpcEnv.ask解读

dclar

spark 多线程 Spark调优 源代码

深入了解Spring之MessageSource

邱学喆

MessageFormat MessageSource MessageSourceAware

vivo S系列的爆款密码:自拍,自然,自出机杼

脑极体

Spark SQL和DataFrames:内置数据源简介(四)

Databri_AI

spark sparksq

Python 正则表达式急速入门

喵叔

7月日更

华为18级工程师耗时三年才总结出这份Java亿级高并发核心编程手册

Java 编程 程序员

智能运维(AIOps)系列之四:智能运维落地的思路

micklongen

AIOPS 智能运维

Python OpenCV 对象检测,图像处理取经之旅第 37 篇

梦想橡皮擦

7月日更

架构实战营第二周作业——微信朋友圈高性能复杂度

发酵的死神

架构实战营

🐧【Linux技术专题系列】「必备基础知识」一起探索(su、sudo等相关身份提权/身份切换机制)

码界西柚

Linux linux 文件权限控制 7月日更 Linux身份提权

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