[译] Angular v15 正式发布!
发布网友
发布时间:2024-10-03 19:42
我来回答
共1个回答
热心网友
时间:2024-10-19 04:48
Angular v15 正式发布,代表了开发体验提升的顶点,经过数十次改进,旨在提供更佳的开发人员体验和性能。本文将聚焦于Angular v15中的关键特性,包括独立API的稳定版本、函数式路由守卫、改进的堆栈跟踪以及更多组件方面的增强。
独立API正式稳定!在Angular v14中,我们引入了新的独立API,允许开发人员在不使用NgModules的情况下构建应用程序。这些API现已从开发预览版本中毕业,成为稳定API的一部分。从现在开始,我们将通过语义版本控制独立API的发展。这些API确保独立组件在Angular应用中工作,并且现在完全可以在HttpClient、Angular Elements、Router、Forms等模块中工作。使用单个组件启动应用程序的代码如下:
独立API的引入使得代码复用提升到另一个高度,特别是通过实现新的指令组合API(directive composition API)。该功能的灵感来自GitHub上最受欢迎的Issue feature request,即为Host Element添加指令的功能。指令组合API使开发人员能够使用指令增强Host元素能力,并为Angular提供了强大的代码复用策略,这仅适用于独立指令。以下是一个简单的示例,展示了如何使用指令HasColor和CdkMenu增强MatMenu组件。
Angular v15中,我们宣布了Angular图像指令的开发者预览版,该指令在与Chrome Aurora的合作下进行开发。在新版本中,这一功能已成为稳定版,Land’s End试验显示,使用此功能能够使LCP( Largest Contentful Paint)改善75%。此外,我们还为image指令提供了一些新功能,允许开发者在组件或NgModule中直接使用独立的NgOptimizedImage指令。要在组件中使用此指令,只需将Image的src属性替换为ngSrc,并确保为LCP图像指定priority属性。
我们致力于减少guard中的样板代码,引入了函数式路由守卫(functional router guards),使代码更加简洁。通过使用函数式守卫,开发人员可以简化代码,同时函数式守卫也是可组合的,允许创建类似工厂的函数来接受配置并返回guard或resolver函数。这将帮助进一步减少样板代码,并使代码更加模块化和可维护。
为了使router更简单并进一步减少样板代码,router在延迟加载时自动打开默认导出。此更改简化了路由声明,无需手动导入默认导出,只需在lazy-file中通过export default class LazyComponent默认导出即可。
为了改善开发者在调试经验方面的困难,我们与Chrome DevTools团队合作,解决了错误消息的问题。我们引入了一种机制,通过Angular CLI注释源映射来忽略来自node_modules的脚本。此外,我们合作了一个异步堆栈标记API,允许我们将独立的、调度的异步任务连接到单个堆栈跟踪中。这些更改极大地改善了开发者在Chrome DevTools中看到的堆栈跟踪,使得跟踪从AppComponent中的按钮按下到错误的执行过程变得更加直观。
在组件方面的改进中,我们解决了滑块中支持范围选择的问题,并引入了新的API来自定义组件的密度。新版本的组件包括广泛的可访问性改进,如更好的对比度、增加的触摸目标大小和改进的ARIA语义。此外,我们还引入了CDK Listbox组件,为开发者提供一组用于构建UI组件的行为原语。
在实验性esbuild支持的改进中,我们宣布了在ng build中对esbuild的实验支持,以加快构建时间并简化我们的管道。在v15中,我们支持了实验性的Sass、SVG模块、文件替换以及ng build --watch功能。如果在实际环境中遇到任何问题,请在filing an issue上提交问题,以帮助我们了解并解决问题。
语言服务现在支持自动导入模板中使用但尚未添加到独立组件或NgModule的组件。在Angular CLI中,我们引入了对独立稳定API的支持,通过ng g component --standalone生成新的独立组件。我们还简化了ng new输出,删除了test.ts、polyfills.ts和environments文件,并通过angular.json中的polyfills指定填充。为了减少配置开销,我们使用.browserlist来定义目标ECMAScript版本。
社区贡献在v15中也得到了体现,自v14发布以来,我们收到了来自框架、组件和CLI的210多人的贡献。我们特别提到了两个重要的贡献,包括为DatePipe全局配置默认选项的能力和在使用Angular Universal时为优先级图像添加preload标记的功能。
在废弃(Deprecations)方面,主要版本使我们能够朝着简单、更好的开发人员体验以及与web平台的一致性发展。我们对所提供的选项providedIn: 'any'表示反对,除了框架内部的一些深奥的案例外,它的用途非常有限。我们也反对provided:NgModule,因为它没有广泛的用途,并且在大多数情况下,使用providedIn:"root"是更合适的选择。对于CSS布局的发展,团队将停止发布@angular/flex布局的新版本,我们将继续提供安全和浏览器兼容性修复。更多信息可以在我们的"现代CSS"系列的第一篇博文中找到。
我们对Angular v15充满兴奋,因为它标志着框架朝着更简洁、更好的开发人员体验以及与web平台的一致性迈进。接下来,我们将解决服务器端渲染管道和反应性的改进,同时全面提高生活质量。我们迫不及待地想与你分享接下来的内容!
热心网友
时间:2024-10-19 04:41
Angular v15 正式发布,代表了开发体验提升的顶点,经过数十次改进,旨在提供更佳的开发人员体验和性能。本文将聚焦于Angular v15中的关键特性,包括独立API的稳定版本、函数式路由守卫、改进的堆栈跟踪以及更多组件方面的增强。
独立API正式稳定!在Angular v14中,我们引入了新的独立API,允许开发人员在不使用NgModules的情况下构建应用程序。这些API现已从开发预览版本中毕业,成为稳定API的一部分。从现在开始,我们将通过语义版本控制独立API的发展。这些API确保独立组件在Angular应用中工作,并且现在完全可以在HttpClient、Angular Elements、Router、Forms等模块中工作。使用单个组件启动应用程序的代码如下:
独立API的引入使得代码复用提升到另一个高度,特别是通过实现新的指令组合API(directive composition API)。该功能的灵感来自GitHub上最受欢迎的Issue feature request,即为Host Element添加指令的功能。指令组合API使开发人员能够使用指令增强Host元素能力,并为Angular提供了强大的代码复用策略,这仅适用于独立指令。以下是一个简单的示例,展示了如何使用指令HasColor和CdkMenu增强MatMenu组件。
Angular v15中,我们宣布了Angular图像指令的开发者预览版,该指令在与Chrome Aurora的合作下进行开发。在新版本中,这一功能已成为稳定版,Land’s End试验显示,使用此功能能够使LCP( Largest Contentful Paint)改善75%。此外,我们还为image指令提供了一些新功能,允许开发者在组件或NgModule中直接使用独立的NgOptimizedImage指令。要在组件中使用此指令,只需将Image的src属性替换为ngSrc,并确保为LCP图像指定priority属性。
我们致力于减少guard中的样板代码,引入了函数式路由守卫(functional router guards),使代码更加简洁。通过使用函数式守卫,开发人员可以简化代码,同时函数式守卫也是可组合的,允许创建类似工厂的函数来接受配置并返回guard或resolver函数。这将帮助进一步减少样板代码,并使代码更加模块化和可维护。
为了使router更简单并进一步减少样板代码,router在延迟加载时自动打开默认导出。此更改简化了路由声明,无需手动导入默认导出,只需在lazy-file中通过export default class LazyComponent默认导出即可。
为了改善开发者在调试经验方面的困难,我们与Chrome DevTools团队合作,解决了错误消息的问题。我们引入了一种机制,通过Angular CLI注释源映射来忽略来自node_modules的脚本。此外,我们合作了一个异步堆栈标记API,允许我们将独立的、调度的异步任务连接到单个堆栈跟踪中。这些更改极大地改善了开发者在Chrome DevTools中看到的堆栈跟踪,使得跟踪从AppComponent中的按钮按下到错误的执行过程变得更加直观。
在组件方面的改进中,我们解决了滑块中支持范围选择的问题,并引入了新的API来自定义组件的密度。新版本的组件包括广泛的可访问性改进,如更好的对比度、增加的触摸目标大小和改进的ARIA语义。此外,我们还引入了CDK Listbox组件,为开发者提供一组用于构建UI组件的行为原语。
在实验性esbuild支持的改进中,我们宣布了在ng build中对esbuild的实验支持,以加快构建时间并简化我们的管道。在v15中,我们支持了实验性的Sass、SVG模块、文件替换以及ng build --watch功能。如果在实际环境中遇到任何问题,请在filing an issue上提交问题,以帮助我们了解并解决问题。
语言服务现在支持自动导入模板中使用但尚未添加到独立组件或NgModule的组件。在Angular CLI中,我们引入了对独立稳定API的支持,通过ng g component --standalone生成新的独立组件。我们还简化了ng new输出,删除了test.ts、polyfills.ts和environments文件,并通过angular.json中的polyfills指定填充。为了减少配置开销,我们使用.browserlist来定义目标ECMAScript版本。
社区贡献在v15中也得到了体现,自v14发布以来,我们收到了来自框架、组件和CLI的210多人的贡献。我们特别提到了两个重要的贡献,包括为DatePipe全局配置默认选项的能力和在使用Angular Universal时为优先级图像添加preload标记的功能。
在废弃(Deprecations)方面,主要版本使我们能够朝着简单、更好的开发人员体验以及与web平台的一致性发展。我们对所提供的选项providedIn: 'any'表示反对,除了框架内部的一些深奥的案例外,它的用途非常有限。我们也反对provided:NgModule,因为它没有广泛的用途,并且在大多数情况下,使用providedIn:"root"是更合适的选择。对于CSS布局的发展,团队将停止发布@angular/flex布局的新版本,我们将继续提供安全和浏览器兼容性修复。更多信息可以在我们的"现代CSS"系列的第一篇博文中找到。
我们对Angular v15充满兴奋,因为它标志着框架朝着更简洁、更好的开发人员体验以及与web平台的一致性迈进。接下来,我们将解决服务器端渲染管道和反应性的改进,同时全面提高生活质量。我们迫不及待地想与你分享接下来的内容!