Angular:2019年状态

现在夏天是一年中世界各地举行各种会议和其他活动的时候。 程序员此时实际上不知所措,而新信息通常很难吸收。

前端开发世界就像火车一样,不停地移动。 我们都知道跟上这趟火车有多么困难。 观看会议视频需要花费很多时间,因此,很明显,原因是我们许多人在下班后都喜欢在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中最喜欢(或不喜欢)什么?

Source: https://habr.com/ru/post/zh-CN459298/


All Articles