写点什么

Angular 16 正式发布,抢先体验指南

  • 2023-05-08
    北京
  • 本文字数:2549 字

    阅读完需:约 8 分钟

Angular 16 正式发布,抢先体验指南

上周,Angular 正式发布了 v16 版本。这个版本带来了许多功能和变化,比我们之前看到的任何一个主要版本都要多(当然,不包括从 Angular 到 Angular 2 的转变)。Angular 正在经历一种复兴,而 v16 只是个开始。


Angular v16 的新特性包括:全新 Reactivity 模 型的开发者预览,完全向后兼容,Angular Signals 库,RXS 互操作性;服务器端渲染和 hydration 增强;改进独立组件、指令和管道的工具等。



本文将带您了解如何将 Angular 应用程序更新至 v16 版本。


关于本文内容的概括汇总,以及将 Angular 应用程序更新至 v16 的分步过程,请参阅 Angular 更新指南(https://update.angular.io/)。


本文列出的 Angular 更新指南及相关信息,摘录自以下变更日志。


angular/angular changelog:https://github.com/angular/angular/blob/main/CHANGELOG.md


angular/angular-cli changelog:https://github.com/angular/angular-cli/blob/main/CHANGELOG.md


angular/components changelog:https://github.com/angular/components/blob/main/CHANGELOG.md


如有需求,可参考此前发布的“更新至 v15”:https://angular.io/guide/update-to-version-15


Angular v16 中的功能亮点


全面的新功能列表,请参阅关于 v16 Angular 博文更新。


https://blog.angular.io/


Angular Signals 开发者预览


此版本包含 Angular 新响应式基元的首个开发者预览,分别为:signal, computed 和 effect。关于详细信息,请参阅 Signals 指南。


https://angular.io/guide/signals


更多背景信息,请参阅 Angular Signals RFC。


https://github.com/angular/angular/discussions/49685


增强 hydration 开发者预览


此前,当 Angular 在服务器端渲染或编译时预渲染的页面上启动时,该框架会丢弃一切现有 DOM 节点并从头开始重新渲染。借助 v16 的增强 hydration 功能,现在您可以指定 Angular 重用这些现有 DOM 节点。关于更多细节信息,请参阅完整的 hydration 指南。


https://angular.io/guide/hydration


使用 esbuild 开发者预览版加快构建速度


v16 带来了基于 esbuild 的全新 Angular CLI 构建器开发者预览版。这种新架构能够在多种场景下显著缩短构建时间。该预览版还与 Vite 相集成以支持 CLI 的开发服务器。


更新 angular.json 即可体验这一全新构建设置:


content_copy"architect": {  "build": {    "builder": "@angular-devkit/build-angular:browser-esbuild",
复制代码


独立组件迁移与搭建


为了支持开发人员将自己的应用程序转换为独立 API,Angular v16 引入了迁移图表和独立的迁移指南。这些工具大大减少了将代码迁移至独立组件、指令和管道所需要的工作量。关于详细信息,请参阅独立迁移指南。


https://angular.io/guide/standalone-migration


通过以下命令生成具有独立组件的新 Angular 应用程序:


ng new --standalone
复制代码


按需要输入


按照需要标记组件和指令输入:


export class ColorPicker {  @Input({ required: true }) defaultColor: string;}
复制代码


如果模板中包含一个组件,但没有指定其所有必需输入,Angular 会在构建过程中报告错误。


Angular v16 中的重大变更


关于重大变更的完整列表,请参阅 GitHub 上的完整变更日志。


Angular v16 需要配合 node.js v16 或 v18 使用


Angular 需要配合 node.js v16 或 v18 版本使用。PR #47730


关于兼容性的完整说明信息,请参阅版本兼容性页面。


https://angular.io/guide/versions


Angular v16 需要配合 TypeScript 4.9 或更高版本使用


Angular v16 不再支持 4.9 之前的较早 TypeScript 版本。PR #49155


关于兼容性的完整说明信息,请参阅版本兼容性页面。


Angular 兼容性编译器(ngcc)已被移除


Angular 兼容性编译器(ngcc)是一种构建工具,用于促进 Angular 之前的编译器及渲染架构(View Engine)与其新架构(Ivy)之间的兼容性。


View Engine 已在 Angular v13 中被移除,v16 则最终移除了 ngcc。因此,现在已无法在 Angular v16+ 版本中使用由 View Engine 构建的 Angular 库。


Angular 包格式变更


Angular 包格式(APF)现已更新,具体包含以下变更:


  • Flattened ESM 2015 (FESM2015) 输出已被移除。

  • EcmaScript 2020 输出已更新至 EcmaScript 2022(包括扁平化输出)。


关于背景信息,请参阅 Angular 包格式页面。


https://angular.io/guide/angular-package-format


ReflectiveInjector 已被移除


ReflectiveInjector 及相关符号已被移除。请更新代码以避免引用 ReflectiveInjector 符号。作为替代方案,可以使用 Injector.create 创建注入器。


Router.createUrlTree 行为更新


由于 Router.createUrlTree 现可在更多场景中正确起效,因此需要对模拟 ActivatedRoute 实例的测试做相应调整。具体来讲,这意味着使用无效 / 不完整的 ActivatedRoute 模拟进行的测试可能引发与此前不同的行为。另外,测试现可导航至真实 URL,不同于之前只能导航至根目录的情况。请确保在测试中提供相应的预期路由。虽然几乎不会对生产造成影响,但我们发现此前如果使用未出现在当前路由程序状态中的 ActivatedRoute,相关导航可能会被忽略。在创建正确的 URL 之后,应用程序中的导航行为可能会有所不同。在大多数情况下,仅使用空命令数组更新查询参数的导航时会引发这个问题,例如 router.navigate([], {relativeTo: route, queryParams: newQueryParams})。要加以解决,应移除其中的 relativeTo 属性。


Angular v16 即将弃用的功能


以下 API 在 v16 中仍然可用,但可能会在未来版本中被移除,具体请参阅 Angular 弃用实践。


https://angular.io/guide/releases#deprecation-practices


为了保持 Angular 应用程序的可靠性,请尽可能始终快速更新应用程序。



小结


如果你是 Angular 开发人员,或正在考虑将 Angular 用于下一个项目,了解这些新功能是必不可少的。其中一些功能是社区长期以来的需求。一些功能(如 Signal 和 SSR)让 Angular 与其他现代框架相媲美。随着 v17 中更多功能的推出,Angular 将与目前的版本有很大不同。考虑到 Angular 带来的变化,如果不及时更新,就无法利用这些新功能,你的代码库很快就会过时。


相关阅读:

好用的 Angular 组件库有哪些推荐的?TinyNG 好用吗?

2023 重学 Angular

前端架构三大巨头之一 Angular|深度讲解

AngularJS 进阶 (二十五)requirejs + angular + angular-route 浅谈 HTML5 单页面架构

2023-05-08 14:525662

评论

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

前端必备!5大mock省时提效小tips,用了提前下班一小时

LynnYang

Mock Mock测试框架

固生堂中医与民生银行广州分行开启战略合作!构建便利、健康生活

E科讯

【炸雷】Elasticsearch 的 Log4j 漏洞处置策略

极限实验室

elasticsearch log4j 安全漏洞 极限网关 infini gateway

Spring Cloud 整合 Nacos 实现服务配置中心

程序员泥瓦匠

Spring Cloud nacos spring cloud alibaba

2022第十五届北京国际物联网展览会

InfoQ_caf7dbb9aa8a

北京行动计划

Zilliz 上榜甲子光年「2021 中国最具商业潜力的20 家数据智能 Cool Vendor」

Zilliz

模块六作业

panxiaochun

架构实战营

接口自动化的关键思路和解决方案,本文都讲清楚了

LynnYang

Postman 接口测试 接口自动化自动化测试平台

CSS之选择器(二)

Augus

CSS 12月日更

万物可检索可回放

mtfelix

28天写作

Apache Log4j2 远程代码执行 漏洞

try catch

皮皮APP x 武汉市残疾人福利基金会 共建成长乐园

联营汇聚

网络安全:记一次安全审计

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 代码审计

鸿蒙应用开发:实现简单的媒体播放器

ZEGO即构

音视频 HarmonyOS 媒体播放器

测试小白入门必知必会的8个测试工具

LynnYang

软件测试 接口测试 测试工具

性能监控之Sleuth+Zipkin 实现 SpringCloud 链路追踪

zuozewei

链路追踪 性能测试 SpringCloud 性能监控 签约计划第二季

初学者只懂操作步骤可不行,本文把接口测试的理论原理和工具功能逻辑都说清楚了

LynnYang

软件测试 Jmeter Postman 自动化测试 接口测试

课程预告丨12月15日晚官方直播带你领略ArkUI的声明式开发范式之美

HarmonyOS开发者

HarmonyOS ArKUI 3.0

CODING 与悬镜安全达成战略合作,引领 DevOps 向 DevSecOps 创新模式升级

CODING DevOps

DevOps 数字化转型 DevSecOps

2022北京-AI人工智能-主题展

InfoQ_caf7dbb9aa8a

openLooKeng ODBC用户手册

LooK

练手练到阅文集团作家中心了,python crawlspider 二维抓取学习

梦想橡皮擦

12月日更

左右互搏:GAN在爱奇艺短视频推荐冷启动中的实践

爱奇艺技术产品团队

缓存和数据库一致性问题说烂了,但这篇让我跪下唱征服!

百度开发者中心

数据库 缓存

智慧园区系统建设助力智慧城市信息化建设

a13823115807

智慧城市 智慧园区 智慧园区系统平台建设

Spark和Hadoop以及区别

编程江湖

大数据

《风起洛阳》原来还能这么玩?“奇观”玩法集锦大揭秘

爱奇艺技术产品团队

图数据库平台建设及业务落地

安第斯智能云

数据库 算法 小布助手

接口测试 再也不必来回切换,发现一个接口测试软件,可以替代 Swagger+Mock+Jmeter+Postman

LynnYang

接口测试 测试工具 接口自动化自动化测试平台 Mock Mock测试框架

性能监控之常见 Java Heap Dump 方法

zuozewei

Java JVM 性能测试 性能监控 签约计划第二季

5G基站智能化开通

鲸品堂

5G 网站安全基础

Angular 16 正式发布,抢先体验指南_大前端_丁晓昀_InfoQ精选文章