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的主要优势是:

  1. 使用相同工具制作后端和前端的机会。
  2. 增量构建和测试。
  3. 它有可能在构建服务器场上进行远程构建和缓存。

第二点对大多数开发人员最有用。 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更新和新功能摘要文章已经结束。

资讯来源:由0x资讯编译自APPDIVIDEND,版权归作者Krunal所有,未经许可,不得转载
你可能还喜欢