谷歌 Angular 团队负责人 Minko Gechev 在NG-BE 2024上向观众预览了 2025 年 Angular 的发展方向。该演讲最近发布在 YouTube 上。
新年的首要任务是让 zoneless 保持稳定。它是在 Angular 18 中作为实验性版本发布的,指的是一种无需 Zone.js 库参与即可运行的变更检测策略。Gechev 解释说 zoneless 会加快初始渲染速度,因为你不必下载 Zone.js。
他说道:“它将提供更好的开发人员体验,因为你将获得更有意义的堆栈跟踪。”
他补充说,Zone.js 不会消失,但他们确实希望将其变为可选项,并创建一种简单的退出方式。他们还计划专注于改进现有 Angular Forms、HTTP、模块和路由器与信号的集成,并开发 Signals 表单模块。
Gechev 表示,他还非常热衷于改善程序员使用应用组件开发应用程序的人体工程学。例如,从组件库导入地图按钮时,开发人员需要将其导入组件元数据——他说这似乎是多余的。
“使用独立组件时,您总是会使用这个确切的实例、这个确切的地图按钮和这个确切的工具提示,”他说。“因此,组件元数据中的这种导入完全是多余的,我们已经看到很多人实际上很难理解为什么存在这种情况,那些没有 Angular 经验的人只是努力以这种方式构建他们的第一个 Angular 组件。”
他说,Angular 可以删除导入并直接从本地模块范围引用地图按钮组件,以实现直接性。
Angular 团队还在考虑与组件更改相关的其他挑战。 Gechev 警告说,到目前为止,该团队“只是在集思广益”,如果他们决定以某种方式改进组件创作体验,它将创建 RFC。
“我们很可能会继续关注性能和开发者体验,因为在 Web 框架中,情况通常都是这样的;业务正在推动更大规模应用程序的开发,而应用程序的大小往往与性能和开发者体验的要求相冲突,”他说。“我们需要根据 Web 应用程序的复杂性来扩展性能和开发者体验,我们还希望在提供稳定可靠的更新路径的同时做到这一点。”
React 版本 19 已稳定
React v. 19 上周已稳定,并添加了 Actions,可自动为您提交数据。为此,React 添加了在转换中使用异步函数的支持,以自动处理待处理状态、错误、表单和乐观更新。
此外,为了支持这一点,React 19 引入了一个名为 useActionState 的新钩子,它接受一个函数并返回一个要调用的包装动作。在金丝雀版本中,这个钩子被称为 ReactDOM.useFormState,但现在已被弃用,因为 useActionState 取代了它。
发行说明指出:“这是因为 Actions 组合而成的。当调用包装的 Action 时,useActionState 将返回 Action 的最后结果作为数据,并将 Action 的待处理状态作为待处理。”
React 19 还包含了 Canary 频道中包含的所有 React Server Components 功能。
该帖子指出:“这意味着服务器组件附带的库现在可以将 React 19 作为对等依赖项,并使用 react-server 导出条件,以便在支持全栈 React 架构的框架中使用。”
Flutter 添加了框架功能和新的 DevTool 功能
Flutter 发布 3.27 版本,对框架、引擎和生态系统进行了更新。
该开源框架由 Google 创建,支持使用单一代码库为多个平台构建应用程序。
框架增强功能包括许多 Cupertino 更新,这些更新使其更加可定制,并添加了鼠标光标、填充颜色、语义标签和缩略图等属性。它们还包括:
- 规范化 Material 主题,重构 CardTheme、DialogTheme 和 TabBarTheme,使其符合 Flutter 的组件主题约定。还添加了 CardThemeData、DialogThemeData 和 TabBarThemeData,以定义对组件视觉属性默认值的覆盖;
- CarouselView 的更多功能可支持轮播内的更多动态布局;
- 使用 ModalRoutes 混合路线转换;
- 文本选择改进;以及
- 支持更好的行和列间距。
此版本还使 Impeller 成为现代 Android 设备上的默认渲染引擎,该引擎自去年开始处于预览状态。在较旧的 Android 设备和不支持 Vulkan 的设备上,仍将使用 Skia 渲染引擎。
开发人员工具和 IDE 的改进包括支持在 Flutter Deep Links 工具中验证 iOS 深度链接设置,以及改进处理离线数据时的工作流程。
此版本中一个有趣的实验性功能是,它允许开发人员通过在 DevTools 设置中启用 WebAssembly 功能来加载 WASM 编译的 DevTools 应用程序来尝试 WebAssembly。Flutter 指出,这“应该比默认的 JS 编译版本的 DevTools 产生更好的性能”。由于它是实验性的,因此鼓励开发人员报告他们遇到的任何问题。
Safari 添加 CSS 文本框居中、Wasm 垃圾收集
网络编程最大的怪异之处是尝试使用 CSS 将文本框视觉居中。如果您试图让标题与图像顶部对齐,这尤其令人头疼。Safari 18.2 的 WebKit旨在通过允许开发人员声明您希望浏览器在计算布局时考虑文本框边缘的字体度量来解决此问题。代码如下:
h2 {
text-box: trim-start cap;
}
根据发行说明,它的意思是“请在帽线处修剪起始边缘(标题上方),其中包括一个示例,展示了它的外观与没有新代码的外观。
WebKit 还增加了对 Wasm 垃圾收集的支持。如果没有此功能,依赖垃圾收集的源语言(包括 Java、C#、Kotlin 和 Go)通常必须编写自己的垃圾收集器并将其编译为 WebAssembly。
帖子指出:“这在针对 WebAssembly 时构成了重大障碍。”“由于 WebAssembly 内存的限制,这些收集器通常被迫使用效率较低的实现技术,并且无法轻松与 JavaScript 交互。”
借助垃圾收集功能,这些语言通常可以直接在 WebAssembly 中表达其类型系统,从而更容易定位。现在,这些语言(一旦编译为 Web Assembly)可以利用浏览器用来管理 JavaScript 对象的本机垃圾收集器,从而简化 JS/Wasm 互操作性并通常提高性能。到目前为止,Chrome 版本 119 及更高版本以及 Firefox 版本 119 都支持 WasmCG。