写点什么

Angular 重磅回归

  • 2023-10-07
    北京
  • 本文字数:2318 字

    阅读完需:约 8 分钟

大小:1.16M时长:06:45
Angular 重磅回归

作者 | Loraine Lawson

译者 | 张乐

策划 | Tina

 

Angular 正在复兴。

 

Angular 是一个由 Google 和社区共同领导的开源 Web 应用框架。在设计上,Angular 是 AngularJS 的完全重写,由 AngularJS 的同一个开发团队负责。

 

去年 1 月,Angular 团队宣布对 AngularJS 的长期支持正式停止,团队已经将全部精力放到了开发新的功能上。该团队于今年 5 月正式发布了 Angular v16 ,并打算在今年 11 月发布 Angular v17 版本。目前他们推出了将要在 v17 中包含的一系列功能,比如控制流。

 

关注 Angular 的前端开发者认为,Angular 正在复兴。Progress 高级开发大使 Alyssa Nicoll 也想向大家传达这样一个信息:是时候重新审视这个 JavaScript 框架了。

 

Nicoll 是Angular Air播客的主持人,她的职责包括与Google Angular团队共事。Nicoll 表示,自 2015 年以来,基于 TypeScript 的框架发生了显著的变化,特性不断扩展。就在那个时候,Google 重写了 AngularJS,创建了一个全新的框架 Angular 2+。然后在很长的一段时间里,Angular 团队都在重写名为 Ivy 的基础视图引擎。她说,现在 lvy 已完成,Angular 团队发布了之前推迟的升级和新特性。因此,Angular 变得对所有用户都更加友好。

 

Nicoll 说:“这就是我将它与文艺复兴联系起来的原因,因为它不仅带来了活力、新鲜感和创造力,而且还大幅优化了开发体验。人文主义是文艺复兴运动的一个重要组成部分,涉及人类成长和人类潜力。围绕 Angular 的这一运动关注的也是开发体验以及人们使用 Angular 的潜力,并使其对所有用户都更加友好。”

 

这可能不够有说服力。Stack Overflow 2023年的调查数据显示,框架使用率总体上呈下降趋势,特别是过去一年,Angular 的使用量下降了 24%。同时,Svelte 和 Deno 的使用率则分别增长了约 62%和 61%。Angular 控制了约 18%的框架“市场”,而 React 仍然以接近 41%的使用率领先。

 

之所以出现上述变化,其中一部分原因就是使用率下降。

 

Nicoll 说:“Angular 团队……非常关注开发体验,因为我们正在设法吸引新的开发人员,因为如果没有大量新的开发人员采用,我们的社区将会慢慢萎缩。”

 

Nicoll 说,该框架的改进主要体现在以下三个方面。我们有必要重新对它进行审视。

 

1. 移除模块

 

在 Angular 中,最小的代码块不是组件,而是模块。在众多 JavaScript 框架中,只有它是这样的。Nicoll 解释说,模块是封装器,其中包含依赖关系、共享功能甚至路由等内容。

 

移除模块可能会让习惯了模块的“Angularites”感到困扰,但这将使其他开发人员更容易理解框架。

 

她说:“即使是长期使用 Angular 的人,一旦停止使用模块,也会看到框架未来的潜力。这使得其他 JavaScript 开发人员使用我们的框架变得更容易。如果需要快速加入 Angular 项目——因为有很多团队有 Angular 项目、React 项目或 Vue 项目,人们就更容易根据现有的经验来理解我们的框架,因为基本部件看起来一样。”

 

对于经验丰富的 Angular 开发人员,Nicoll 建议不要在生产应用中采用“淘汰和替换”的方法。

 

她说:“你可以删除应用程序模块,这是启动整个应用程序的基础模块。但我不推荐这样做,因为我认为社区本身还不支持这一点。如果你这样做,你的许多依赖项都可能会出问题,因为它们会找不到应用程序,这是因为它们依赖这个基础模块来获取应用程序的信息,以及如何与之协同。”

 

她补充说,支持 Angular 应用程序基础结构的工具和依赖项仍在发展,只是还没有达到这种程度。

 

“我想说,一定要从组件中删除模块,或者在开发新组件或管道时不再使用它们。但是,在生产环境中,除非你非常确定所有的依赖项以及它们与应用程序的集成方式,否则就先等等,暂时保留基础模块。”

 

2. 添加信号

 

Nicoll 表示,Angular 正在添加信号,这为它的“内置响应性原语”。信号将使开发人员能够轻松管理和响应应用程序中的更改。她认为,这有可能彻底改变开发人员对响应式编程的处理方式,使其更容易被更广泛的开发人员所接受。

 

“React 及其他许多框架,甚至.Net 都有信号的概念。”Nicoll 说,“在某种程度上,是 Angular 正在追赶,使自己变得更好。”

 

信号是一个对象,它有值,而且我们可以观察其变化。它们类似于 React 的状态,但是根据 Google Bard 的说法,信号主要有以下几个优势:

  • 信号可以在组件之间共享,而不必将它们作为 props 向下传递。

  • 信号仅在需要时更新,这可以提高大型应用程序的性能。

  • 信号可用于创建复杂的状态管理模式,例如 Redux 和 MobX。

 

目前,Angular 提供了可观察对象以实现响应性,并将其与 OnPush 相结合。虽然有效,但也有代价。

 

她说:“使用可观察对象和 OnPush 的代价可归结为 zone.js——很多 Angular 开发者提到它时都会做出呕吐的表情或者胸前画十字——和变化检测。像信号这样内置的反应原语就没有这种代价。”

 

她补充说,就目前而言,未来在 Angular 中不会出现这种变化检测,这将缩短加载时间,提升应用程序性能,甚至提升开发速度。

 

3. 控制流

 

在外媒分享这个主题时,Nicoll 解释说,新提议的控制流语法“很大程度上受到 Svelte 的控制流以及 Mustache 模板语言的启发”。她说:“想想内联的 if、else、switch 和 defer。”

 

控制流允许在模板中使用 if 和 else 语句,方便开发人员加载东西,甚或是延迟加载(例如图像),直到用户需要或执行到这块时。

 

她说:“所有这些都可以改善 Angular 应用程序的用户体验。所有这一切,我提到的每一件事,都是可选的;它们不会强迫你改变使用 Angular 的方式,不会带来任何破坏性。我认为,这是他们会继续遵守的一项对于 Angular 社区的重要承诺。”

 

参考链接:

https://blog.angular.io/meet-angulars-new-control-flow-a02c6eee7843

https://blog.angular.io/angular-v16-is-here-4d7a28ec680d

https://thenewstack.io/the-angular-renaissance-why-frontend-devs-should-revisit-it/

2023-10-07 14:135824

评论

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

我们有来生吗?

Janenesome

读书 碎碎念 猎奇

pip 配置路径要死记硬背?

风起帆扬了

Python Linux windows pip

七大查找算法,面试考试皆可用

我不自豪谁志豪

Java 面试 算法

低代码是什么鬼

Jeff Kit

低代码 全栈 开发

利用goaccess分析nginx日志

Megatron7

nginx Linux

《零基础学Java》 FAQ 之 1-HelloWorld程序发生了ClassNotFound错误怎么解决

臧萌

Java Hello World !

Graylog部署文档

勤而行之

Linux 开源 工具 日志分析

书籍推荐

蛤蟆先生

读书

maven私服搭建

kcnf

maven

Kubernetes 将迎来首个 LTS 版本

倪朋飞

Kubernetes 容器 微服务

理解 KL 散度的近似

Neil

人工智能 学习 Deep learning Machine Learning

Redis学习笔记(字符串类型)

编程随想曲

redis

回"疫"录(8):我怀疑我病了

小天同学

疫情 心理 回忆录 现实纪录 纪实

字节流(InputStream/OutputStream)

Howe

Java 工作流

python 之 「奶茶名字」的词云展示

小匚

Python python 爬虫 python教程

如何在“写作平台”做一个读者

小天同学

思考 写作平台 建议 读者 阅读量

一次生产事故导致系统崩溃的原因排查过程

hellocj

JAVA 程序展示时间与数据表保存的时间相差了 13 个小时!

我不自豪谁志豪

MySQL 学习 后端

Java并发编程基础--volatile

Java收录阁

volatile 线程

有节制的设计

胖鱼2号

微信 设计 無印良品

聊聊我的程序员下属

程序员干货站

Python 人工智能 程序员 程序人生

面试考试可用,十大排序算法

我不自豪谁志豪

学习 面试 算法

快捷考勤打卡设置

Megatron7

ios

《零基础学Java》 FAQ 之 2-Java版本那点事儿

臧萌

Java

1分钟系列-Elastic Stack(ELK)简介

Yezhiwei

Logstash Kibana ELK

乞丐版英制单位转换

escray

学习 CSD 认证实战营

Bash 的4种运行模式

Megatron7

bash Linux DevOps Shell

取舍与可测试

孙苏勇

产品 产品设计 产品开发

程序员大佬怎么跳槽?

程序员干货站

Python 人工智能 程序员 后端

一次线上服务高 CPU 占用优化实践

挖坑的张师傅

性能优化 JVM cpu

Flutter引擎源码解读-内存管理篇

Geek_70xtik

flutter ios android 跨平台 dart

Angular 重磅回归_架构/框架_Loraine Lawson_InfoQ精选文章