浅谈Angular10中的新功能
程序员文章站
2022-03-22 20:22:05
...
本篇文章带大家了解一下Angular10中的新功能。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。
Angular 10是对流行的Web开发框架的主要升级,通常会在6月24日作为正式版本提供。正式版升级是基于Google开发的基于TypeScript的框架,与新版本相比,它更加注重质量,工具和生态系统的改进特征。
Angular 10小于以前的Angular版本。 新功能包括Angular Material UI组件库中的新日期范围选择器和CommonJS导入警告。 当与CommonJS打包的依赖项可能导致更大,更慢的应用程序一起使用时,CommonJS导入警告会警告开发人员,从而允许开发人员替换ECMAScript模块包。
相关教程推荐:《angular教程》
此外,可选的严格设置,创建一个新的工作区时提供了一个更严格的项目设置ng new
,通过ng new -- strict
。 启用此标志将使用新设置初始化新项目,以提高可维护性,帮助捕获错误并允许CLI在应用程序上进行高级优化。
在哪里下载Angular 10
您可以在GitHub上找到Angular 10的一般版本 。 要更新当前的Angular安装,可以运行以下命令:
ng update @angular/cli @angular/core
Angular 10的新功能
Angular 10的主要功能包括:
- TSlib,包含帮助函数的TypeScript运行时库,已更新为TSlib 2.0。 用于TypeScript的TSLint静态分析工具已更新为TSLint 6。
- 添加了一个编译器接口,用于包装实际的ngtsc编译器。 特定于语言服务的编译器使用项目接口管理多个类型检查文件,并根据需要创建Scriptinfos。
- 新项目的浏览器配置已更新,以排除较旧的,较少使用的浏览器。 不支持Internet Explorer 9,Internet Explorer 10和Internet Explorer Mobile。
- Angular软件包格式不再包含ESM5或FESM5软件包,在为Angular软件包和库运行
yarn
或npm install
时,节省了下载和安装时间。 - 对于编译器,已为属性读取和方法调用添加了名称范围。
-
EntryPointFinder
,这是一个基于程序的入口点查找器,可以从tsjconfig.json文件指定的程序中的导入中获得种子。 当活动程序仅导入一小部分已安装的入口点时,这预计会比DirectoryWalkerEntryPointFinder
更快。 - 由于具有可疑的价值和性能问题,自动完成功能已从HTML实体(如
&
)中删除。 - 显式映射从闭包公开到devmode文件。 此功能针对必须将生产构建输入转换为等效devmode的开发工具。
- 一项重大更改是,将
ModuleWithProviders
强制ModuleWithProviders
。 为了使ModuleWithProviders
模式与Ivy编译和渲染管道一起使用,需要使用通用类型参数,但是在此提交之前,View Engine允许省略通用类型。 如果开发人员使用不带泛型类型的ModuleWithProviders
,则版本10迁移将更新代码。 但是,如果开发人员使用View Engine并依赖于忽略泛型类型的库,则会发出构建错误。 在这种情况下,ngcc将无济于事,迁移将仅涵盖应用程序代码。 应该与图书馆作者联系以修复他们的图书馆。 解决方法是,可以在tsconfig中将skipLibChecks设置为false或将应用程序更新为仅使用Ivy。 - 现在具有TypeScript 3.9的功能,并且删除了对TypeScript 3.8的支持。 这是一个重大变化。 也不再支持TypeScript 3.6和TypeScript 3.7。
- 类型检查的性能已改进到编译器cli。
- 为了提高性能,已对
basePaths
的计算进行了延迟,因此仅在TargetedEntryPointFinder
需要时才进行工作。 以前,每当实例化查找程序时都会计算basePaths
,这在已经处理了目标入口点的情况下浪费了精力。 - 支持合并多个翻译文件。 以前,每个语言环境仅允许一个翻译文件。 现在,用户可以在每个语言环境中指定多个文件,并且每个文件的事务都将通过消息传递ID合并。
- 可以配置异步锁定超时。 这增加了对ngcc.config.js文件的支持,用于设置
retryAttempts
和retryDelay
选项。 集成测试添加了新的超时检查,并使用ngcc.config.js减少了超时时间,以防止测试花费太长时间。 - 在一项重大更改中,有关未知元素的警告现在记录为错误。 虽然这不会破坏应用程序,但它可能会触发一些期望通过console.error不记录任何内容的工具。
- 在另一个重大更改中,任何返回
EMPTY
解析器都将取消导航。 为了使导航继续进行,开发人员必须更新解析器以更新某些值,例如default!Empty
。 - 在元数据中添加了依赖项信息和ng-content选择器。 提议的编译器功能将提供对诸如Angular Language Service之类的工具有用的附加元数据,并具有为库中定义的指令/组件提供建议的能力。
- 通过减小入口点清单的大小和清单中的缓存技术来实现性能改进。 另外,依赖项的缓存是在入口点清单中完成的,并从那里读取,而不是每次都进行计算。 以前,即使不需要处理入口点,ngcc(Angular Ivy兼容性编译器)也将解析入口点的文件以计算依赖关系,这对于large_node模块将花费大量时间。
- 为了提高ngcc性能,现在允许立即报告陈旧的锁定文件。 此外,还将存储已解析的tsconfig文件的缓存副本,如果tsconfig路径相同,则可以重复使用该副本。
- 在一项重大更改中,逻辑已更新,涉及格式化午夜的白天。 当使用
b
或B
格式代码格式化时间时,呈现的字符串不能正确处理跨越几天的白天。 相反,逻辑回落到AM
的默认情况。 此逻辑已更新,因此它可以匹配在午夜之后的一天中的时间,因此它现在将呈现正确的输出,例如at night
英语的at night
。 使用formatDate()
或DatePipe
或b
和B
格式代码的应用程序将受到此更改的影响。 - 对于路由器,
CanLoad
保护器现在可以返回Urltree
。 返回Urltree
的CanLoad
防护Urltree
取消当前导航并重定向。 这与CanActivate
守卫可用的当前行为匹配,该行为也已添加。 这不会影响预加载。CanLoad
保护程序会阻止任何预加载; 带有CanLoad
防护的任何路由都不会被预加载,并且防护也不会作为预加载的一部分执行。 - 微语法表达式的ExpressionBinding与ParsedProperty的ExpressionBinding中正确值范围的传播,这又会将范围传播到模板AST(VE和Ivy)。 该建议也适用于编译器。
- 在对内核的修复中,会将逻辑添加到未修饰的类迁移中,以修饰使用Angular功能的未修饰类的派生类。
- 在重大更改中,Urlmatcher的类型将反映出它始终可以返回null。
- 对于服务人员,已修复了一种情况,即当任务长期运行或超时时,服务人员可能永远不会注册。
- 已经进行了许多错误修复,包括编译器避免了有Kong数组中未定义的表达式,以及内核避免了导入不存在的符号时的迁移错误 。 在Terser内联bug的核心中也有一种解决方法。 另一个错误修复程序正确地标识了受TestBed中的替代影响的模块 。
- Angular NPM不再包含某些jsdoc注释来支持Closure Compiler的高级优化。 这是一个重大变化。 软件包中对Closure Compiler的支持已经试验并中断了一段时间。 使用Closure Compiler的任何人最好直接使用从源代码构建的Angular软件包,而不是使用NPM上发布的版本。 作为临时的解决方法,用户可以考虑将其当前的构建管道与Closure标志
--compilation_level=SIMPLE
。 该标志将确保构建管道生成可构建的,可运行的工件,但由于禁用了高级优化而增加了有效负载大小。
翻译自: https://www.infoworld.com/article/3537449/whats-new-in-angular-10.html
以上就是浅谈Angular10中的新功能的详细内容,更多请关注其它相关文章!