Angular 8更新和新功能摘要
Angular 8更新和新功能摘要是今天的主题。 Angular 8带来了令人印象深刻的变化和改进列表,包括备受期待的Ivy编译器作为选择加入功能。如果您还没有看到,可以查看Angular 7功能和更新。在这篇博客中,我们写了一些关于Angular 7 Crud,Angular 7 Routing,Angular ngClass,Angular ngFor的文章。
内容概述
- 1 Angular 8更新和摘要
- 1.1 TypeScript 3.4
- 1.2 Ivy和Bazel怎么样?
- 1.3 CLI工作流程改进
- 1.4网络工作者
- 1.5懒惰路由的动态导入
- 1.6差分负载
Angular 8更新和摘要
请参阅以下更新。
TypeScript 3.4
Angular 8.0现在支持TypeScript 3.4,甚至需要它,因此您需要升级。
您可以在官方Microsoft博客上查看TypeScript 3.3和TypeScript 3.4带来的内容。
那么Ivy和Bazel呢?
我们将不得不等待更多的新渲染引擎Ivy和新的构建系统Bazel准备好与Angular一起使用。
很快就会提供两者的选择预览。
常春藤是这个版本的重要组成部分,上个月花了大部分精力来自团队。
Ivy是Angular的新编译器/运行时。
它将在未来启用酷炫功能,但目前它的重点是不破坏任何现有的Web应用程序。
Angular 8是第一个提供正式选择加入Ivy的开关。
现在应用更改没有任何实际收益,但您可以尝试查看角度应用程序中是否有任何中断。
因为,在某些时候,可能在Angular版本9中,Ivy将默认为。
所以Angular团队希望社区能够预见到转变并提供反馈,并且我们将在Angular 9之前捕获所有剩余的问题。
谷歌Angular团队背后的技术总监Brad Green在ng-conf 2019中提到,Ivy将允许兼容模式下捆绑尺寸的明显改善与差分加载相结合。
因此,寻求刺激的人可以尝试未来的常春藤API。
常春藤模式明确包含大量的优化潜力。 API仍然标记为私有。你可以通过查看类和函数来判断,因为它们以一个独特的字符ɵ开头。
Angular 8.0的一个新功能是(更快)用Bazel构建CLI应用程序的可能性。 Bazel的主要优势是:
- 使用相同工具制作后端和前端的机会。
- 增量构建和测试。
- 它有可能在构建服务器场上进行远程构建和缓存。
第二点对大多数开发人员最有用。 Bazel允许我们使用精确的输入和输出来声明任务。
然后,当您运行该命令时,Bazel构建任务图,并且只运行必要的图,具体取决于自上次运行以来输入和输出的变化(非常类似于Gradle在Java世界中的作用)。这可以为重建时间带来可观的收益。
Alex Eagle在ng-conf 2019上的演讲对于了解Bazel可以做些什么更有意义。
但请注意:第一次构建将非常缓慢,因为Bazel的目标是精确可重复的构建。例如,如果您在Firefox浏览器上启动测试,它将下载完整版本的Firefox,以确保所有开发人员都在同一浏览器中运行标准
因此,如果您想在大项目(如Angular框架)上启动测试,您可以获取咖啡。但是在第一次构建之后,代码库中的更改只会触发最小的重建。如果您的Web应用程序由多个模块和库组成,那么它尤其有用。
CLI工作流程改进
CLI正在不断改进,现在ng build,ng test和ng run可以通过第三方库和工具进行扩展。例如,AngularFire已经使用deploy命令来使用这些新功能。
网络工作者
根据定义,JavaScript是单线程的。因此,数据调用等更关键的任务异步发生是很常见的。这对精心计算没有帮助。随着JavaScript解决方案的广泛使用,这些问题变得越来越普遍,这就是我们现在支持几乎所有浏览器Web工作者的原因。它们是浏览器在自己的线程中运行的脚本。通过发送消息与浏览器选项卡中的线程进行通信。
虽然Web工作者本身与Angular无关,但在构建中必须考虑它们。目标是为每个Web工作者提供一个捆绑包。新的Angular CLI完成了这项任务。
Web Workers允许您在后台线程中运行CPU密集型计算,释放主线程以更新用户界面。
如果您发现应用程序在处理数据时没有响应,则使用Web Workers可以提供帮助。
要将此类计算外包给后台,我们必须首先使用Angular CLI创建Web worker。
ng生成工人n-queens
懒惰路由的动态导入
延迟加载的路由现在使用标准动态导入语法而不是自定义字符串。这意味着当模块丢失或拼写错误时,TypeScript和linters将能够更好地进行投诉。
所以一个懒惰加载的导入看起来像这样。
{path:'/ student',loadChildren:'。/ student / student.module #StudentModule'}
现在看起来像这样。
{path:`/ student`,loadChildren :()=> import(`./ student / student.module`).then(s => s.StudentModule)}
如果您使用ng upgrade命令升级应用程序,则会为您处理语法更改。
差分负载
由于差异加载,您的Angular 8应用程序现在将自动提高性能。
通过差异加载,在构建生产时会创建两个包:支持ES2015 +的现代浏览器包和仅支持ES5版JavaScript的旧浏览器包。由于新浏览器中ES6模块的支持,浏览器将自动加载正确的捆绑包。
这一新功能为Angular v8带来了最显着的单一性能提升。更现代的浏览器将能够加载更少的代码并加载更少量的polyfill。
最后,Angular 8更新和新功能摘要文章已经结束。