现在夏天是一年中世界各地举行各种会议和其他活动的时候。 程序员此时实际上不知所措,而新信息通常很难吸收。
前端开发世界就像火车一样,不停地移动。 我们都知道跟上这趟火车有多么困难。 观看会议视频需要花费很多时间,因此,很明显,原因是我们许多人在下班后都喜欢在Netflix上观看电影。

该材料的作者(我们将其翻译发表)说,这就是为什么他决定帮助每个想要了解Angular创新的人的原因。 在这里,我们将讨论Angular的当前状态,该框架的新功能以及当前趋势。
关于按比例放大
根据Angular开发团队成员Brad Green在ng-conf 2019上提供的数据,Angular的范围在过去一年中增长了约50%!
显然,许多项目正在从Angular 1.X过渡到该框架的更新版本这一事实可能会影响此数据。 但是50%仍然是一个令人印象深刻的指标。
Angular的增长速度不及Svelte或Vue。 这个框架没有像React那样广泛使用。 但是,与您可以在Reddit或Twitter等资源上阅读的其他框架不同,Angular状况良好,已被数百万开发人员和团队使用。
Angular具有庞大而动态的基础架构。
尽管Angular由核心开发团队创建了许多有用的内置工具,但它的生态系统(为它的开发做出贡献的爱好者社区)非常庞大。 此外,她还代表着高质量的项目。
与基本框架一起,您可以使用许多有趣的工具。 即,我们正在谈论以下内容:
- 与出色的动态开发工具进行深度集成。 其中,可以注意到TypeScript和RxJS。 这些技术的发展对Angular具有直接的积极影响。
- 用于管理应用程序状态的各种库。
- 用于分析和改善代码质量的工具。 如Codelyzer 。
- 用户界面元素,组件,指令,管道等的库。
- 各种IDE的插件可供选择。
- 用于测试应用程序的库和框架。
- 社区成员和Angular团队都在处理高质量,详细的文档。 这包括实用指南,指南,培训材料,书籍和视频课程。 尽管这是此列表中的最后一项,但它与其他项一样重要。
在以下各节中,我们将重点介绍在开发Angular项目时可以使用的一些特别有趣的工具。
角度CLI
▍AngularCLI和极其简单的Angular更新过程
这些不是空话。
在这里,您可以找到一个很好的故事,该故事讲述了如何为每年服务十亿用户的BlueWeb项目在一个工作日内从Angular 7升级到Angular 8。 鉴于从同一个项目从Angular的第二版本过渡到第四版本需要30天,因此这是一个令人印象深刻的成就。
这证明了Angular CLI的巨大价值。 使用该工具可以将生产率提高到我以前从未达到的水平。
如今,很难想象没有Angular CLI就能工作。
▍原理图工具
Angular Schematics工具是Angular开发人员可能每天使用的工具。 例如,我确定您经常使用以下命令:
ng generate component my-component
它基于Angular CLI中内置的Schematics工具。
也许开发人员有机会
创建自己的Schematics规则对您来说是新的。 它们的使用简化了经常使用的代码片段的工作。
▍API构建器
API Builders允许您
扩展或扩展现有团队 。 例如,您可以创建一个使用Jest和Cypress而不是Jasmine和Protractor运行测试的团队。 例如,您可以使用备用棉绒。
框架的新有趣特征
在撰写本文时,Angular的版本8已经发布,其中包含各种改进和新功能。
这里没有任何东西会严重改变该框架的使用方式。 关于新版本工具的类似声明通常被视为好消息。 但是在Angular 8中,有很多改进是肉眼看不到的。 多亏了他们,Angular项目变得越来越小,越来越快。 这些改进使Angular应用程序开发过程比以前更加有趣。 此外,新版本的框架具有一个几乎可以完全使用的新渲染系统。
▍差分加载
从这项技术的名称来看,“差异加载”可能看起来非常复杂,但实际上并非如此。 简而言之,借助此功能,编译器会生成两个捆绑包。 一种是针对现代浏览器的。 没有polyfill代码。 第二个是旧版本的浏览器。
最新的浏览器下载现代软件包。 较旧的浏览器需要polyfill下载专门为其设计的程序集。
这是非常有用的创新。 由于大多数用户极有可能在最新版本的浏览器中工作,因此,事实表明,只有少数用户使用带有polyfill的捆绑包(大于现代捆绑包)。
▍网络工作者
您可能已经听说过Web工作者,所以我们将不处理对该技术本质的解释。 但是您可能不知道在新的Angular版本中将Web Worker集成到应用程序中有多么容易。
在这里您可以阅读更多有关此的内容。
K CDK工具箱
CDK是由开发Angular组件的团队发布的工具包。 在其中,您可以找到
Angular Material使用的抽象,它们与样式无关。
例如,由于有了CDK,开发人员可以使用指令来实现以下功能:
- 使用“拖放”样式的对象。
- 使用自动调整大小的文本区域。
- 弹出式窗口。
- 虚拟滚动。
由于大多数应用程序可以使用高质量的广泛抽象,而每个抽象仅实现有限的功能,因此CDK是一个非常有用的工具。 这比广泛使用且并非总是合理使用成熟组件要好得多。 Angular Material是一组很棒的组件,但是CDK的功能在于,它允许开发人员从基本构建块创建自己的组件。
▍常春藤渲染引擎
Ivy是一个非常有趣的新开发,它是一个渲染引擎。 在Ivy上的工作尚未完成,默认情况下,此引擎已禁用。 但是,从Angular 7开始,它已经可以打开和使用。 Ivy有望成为Angular 9中的主要渲染引擎。
以下是功能齐全的Ivy引擎的期望值:
- 减少捆的大小。
- 调试模板。
- 更快的项目组装,更快的测试。
- 更正现有错误。
如果我们谈论调试,请看以下屏幕截图,您可以在Chrome控制台中看到断点触发。
代码调试如您所见,
ngForOf
指令为我们提供了有关传递的值的信息。
角度和移动平台
▍离子
Ionic是用于开发移动应用程序的框架。 尽管其基本组件是使用Stencil创建的,但它们为开发人员提供了抽象,使Ionic可以与Angular和其他框架一起使用。
ativeNativeScript
NativeScript是类似于React Native的本地移动应用程序开发框架。 它具有与Angular的深度集成-带有Vue支持以及使用它进行纯JavaScript开发的功能。 不幸的是,我与他的经历并不是特别成功。 我不能将它与React Native相提并论。 但是,如果您打算开发移动应用程序,请尝试使用NativeScript。
测试中
▍茉莉和量角器
茉莉花和量角器无需介绍。 这些是用于测试Angular应用程序的标准工具。 它们经过时间的考验,并定期更新,并且与Angular一起使用非常出色。
▍笑话和柏树
借助基于Angular CLI的API Builders的新工具,可以使用Jest和Cypress测试Angular应用程序。
Jest是一个基于Jasmine的单元测试框架。 它是在Facebook上开发的。 这是用于测试React项目的标准框架,由于其速度而广泛分布。 许多人喜欢使用它而不是茉莉花。 如果您也喜欢Jest-现在可以将其用于测试Angular应用程序。
赛普拉斯是一个备受推崇的端到端应用测试框架。 开发社区对其进行很好的对待并非偶然。 它独立于Selenium或WebDriver。 赛普拉斯允许您使用团队日志,知道如何管理网络流量。 它非常稳定,因此您可以期望在其帮助下获得的结果将非常容易理解和预测。
▍角度测试库工具箱
Angular Testing库是一组用于测试用户界面组件的工具,重点是重现用户操作。
这意味着该库迫使程序员确保不以编程方式使用组件。 它旨在测试组件的行为。 该库执行用户通常执行的操作。
例如,当使用该库中的工具时,不会使用以下构造:
myComponent.onClick();
而是模拟用户的自然行为:
const { getByText, click } = await render(CounterComponent, { componentProperties: { counter: 5 } }); click(getByText('+'));
国家管理
▍NgRx
NgRx是一个用于管理应用程序状态的库,该库是在Redux中嵌入的思想的影响下创建的。 NgRx很可能是Angular开发中使用最广泛的状态管理库。 该库的名称表明它严重使用了RxJs流。
▍NGXS
NGXS是一个替代库,用于管理Angular应用程序中的状态,类似于Redux。 如果比较NGXS和RxJS,事实证明NGXS的功能在于它使用了很多类和装饰器。 这样做是为了减少样板代码的数量。 如果正在寻找某个库的人习惯使用类,那么在选择用于管理状态的库时,NGXS的此功能可能是决定性的。
▍秋田
秋田是Datorama开发的状态管理库。 该库也基于RxJS。 如果将它与前面的两个库进行比较,那么它的功能就是可以在不使用Angular的项目中使用。 这意味着从长远来看选择Akita库可以为重用项目代码带来更多机会。
▍也许只是接受RxJ?
对于本节标题中提出的问题,我可以给出肯定的答案。 这取决于您是否喜欢让人联想到Redux的库,以及项目是否需要一个库来管理状态。 如果需要,您可以使用标准
RxJS工具创建存储状态的服务。
用户界面组件库
▍故事书
StoryBook并不是真正的UI组件库。 此工具使您可以创建隔离的组件,并可以研究组件及其变体。
这是一个很棒的工具。 以前,它仅适用于React开发人员。 那我羡慕他们。 但是现在Angular开发人员可以使用它,因此我不得不提起它。
▍角材料
在这里,我们将对臭名昭著的
Angular Material库说几句话,该库为现代开发人员提供了一组针对最新Angular设计的不错的组件。
Angular应用程序的后端
▍火力基地
Firebase是Google拥有的应用程序开发平台。 其结果是,有了Firebase和Angular-
AngularFire的官方库。 该库使用RxJS可观察对象来流数据。 它与Angular深度有效地集成在一起。
▍GraphQL
也许您认为使用GraphQL的乐趣仅适用于React程序员。 如果是这样,那么您就错了。 Angular也有一个
Apollo库版本。 您可以使用此库创建的内容是Firebase的绝佳替代方案。 Apollo适合喜欢使用GraphQL的用户。
estNestJS
NestJS是用于开发服务器应用程序的Node.js的Web框架。 从示例到它,我们可以得出结论,Angular的基本概念对其产生了很大的影响。 这些是模块,控制器,传送带等。 如果您喜欢Angular,那么您可能也会喜欢NestJS。
如果使用
Nx Workspaces ,则为基于Angular和NestJS的全栈应用程序创建框架只需要在控制台中执行一个命令即可。
总结
结果,我们可以说,围绕Angular开发的广阔生态系统为每个想要高质量,可靠工具来解决各种问题的人提供了便利。
当然,在这里我不能透露我最喜欢的数十种库和工具。 如果我这样做了,那么这份材料将是无止境的。 但我希望本文能为您提供有关称为Angular的现代Web开发现象的概述。 我希望您在这里找到了以后可以在项目中使用的东西。
亲爱的读者们! 您在Angular 8中最喜欢(或不喜欢)什么?
