Modern Angular
前言
2016 年春天我开启职业生涯时,如今我们所熟知的 Angular
还不存在;
相反,我当时是一名 Angular.js
开发者 —— Angular.js
是一个如今已被淡忘的框架,它的生命周期已经结束。
虽然它提供了一些有趣的功能,也让我们有机会构建更有条理的 Web 应用程序,但它确实存在一些明显的缺陷。
这就把我们带到了 2016 年 9 月,当时 Angular 2
,也就是现在我们所说的 Angular
发布了。
这可是件大事!一切瞬间发生了改变:我们有了 TypeScript
,到处都是类,有严格的组织规则,而且很快就有了专门用于管理应用程序的 CLI 工具。
当然,一开始这让人应接不暇;然而,经过进一步研究发现,这个框架实际上非常可靠,相比我们之前所拥有的任何东西都是一次直接的升级,
就在那个时刻,包括我在内的许多前端开发者都爱上了它。
当然,这个新的 Angular
和其他任何工具一样,也并非没有缺陷:
于是,对这个我们熟知且喜爱的框架的持续改进过程就此开始。
在最初的几个版本中,框架得以稳定,接着在 8 和 9 版本中,我们有了新的渲染引擎,
而现在我们进入了一个新的阶段,迎来了大量的改进,这些改进甚至被 Angular
核心团队自己称为 “Angular 复兴”。
我一直深度参与 Angular
的发展进程,并深入研究其特性,具体体现在对这些内容进行记录。
我喜欢钻研 Angular
的源代码,试图弄清楚那些最有趣的特性究竟是如何工作的,尝试解决最具挑战性的问题,并与行业专家交流。
我发现,对我来说,学习某样东西的最佳方式就是把它写下来。
我开始撰写关于 Angular
的文章,参与播客节目,甚至在 2019 年开始进行公开演讲。所有这些最终促成了这本书的诞生。
但为什么要写这本书呢?嗯,一开始的时候,作为一个社区,我们对 “Angular 复兴” 一无所知
—— 我们只知道 Angular
计划每六个月发布一次重大版本,每次发布都会带来一些有趣的小新特性。
然而,我们注意到这些变化逐渐变得越来越具有革命性,可以这么说;撰写关于所有这些特性的文章,
或者在播客和活动中谈论它们是很有用的,但变化不断增多,有更多的变化需要深入探索。很明显,需要做更多的事情。
这就是这本书的由来:它旨在帮助那些对 Angular
的这些新变化感到兴奋的开发者,他们可能会被这些变化吓到,
这本书能帮助他们理解这些新特性,欣赏它们,在新项目中使用它们,甚至将旧项目迁移到更现代的方法上。
这本书不敢声称是关于 Angular
所有新内容的完整指南;在我写下这些文字的时候,Angular
还在不断变化和发展。
在写这本书的过程中,我不得不回过头去修改一些已经不再是当前状态的内容,这就是软件开发的本质,我们唯一能做的就是不断学习。
我知道在写这本书的过程中我学到了很多,我希望它也能帮助你学到一些关于现代 Angular
的知识。
关于本书
《Modern Angular》旨在帮助读者理解并接受 Angular
生态系统的最新变化(从 v12 到 v17),
以便从头开始构建新的 Angular
应用程序,或将现有应用迁移到这些新版本。它并非 Angular
的全面教程,
而是帮助 Angular
开发者切实掌握新特性,同时在必要时深入钻研基础知识。
本书适合谁阅读
《Modern Angular》适合已经熟悉 Angular
且曾参与过项目的人士使用;
无论是刚了解该框架基础知识的开发者,还是经验丰富的开发者,都能从中受益。
此外,对于维护大型遗留项目并寻求将代码提升至现代标准策略的开发者来说,本书也颇具价值。
本书的架构:路线图
本书共 10 章,每章涵盖一组独特的新特性。 每章首先探讨旧方法在做某些事情时的情况,然后深入研究新方法,在全新项目中运用它,最后展示帮助迁移现有代码库的方法和策略。
- 第 1 章、从整体上讨论现代
Angular
,解释为什么会发生这些变化, 如何使用最新的Angular
版本从头开始设置项目,以及这些新项目的结构是怎样的。 - 第 2 章、讨论独立的
Angular
构建块,解释我们为什么需要它们, 如何使用独立组件完成所有常见任务,以及如何将基于模块的组件迁移为独立组件。 - 第 3 章、深入探讨
Angular
的依赖注入机制,讨论inject
函数, 它如何改变了开发者进行依赖注入的方式,以及哪些构建块受到了这一变化的影响。 - 第 4 章、探索各种小的新添加功能和改进,比如优化的图像加载器、改进的组件输入、更好的调试选项等等。
- 第 5 章、讨论
RxJS
以及它目前与Angular
的协作方式,还有新的内置互操作性库, 将第 3 章中依赖注入的改进与RxJS
的新方法联系起来。 - 第 6 章、介绍信号,解释为什么需要它们,并提供关于它们所有特性的高级知识。
- 第 7 章、深入探讨信号,解释它们如何提升应用程序性能,以及如何利用它们处理诸如状态管理和与
RxJS
的互操作性等高级任务。 - 第 8 章、讨论现代
Angular
应用程序中的单元测试,以及一些有助于完成该任务的新实用工具。 - 第 9 章、介绍服务器端渲染,探讨它如何提升应用程序性能,以及如何构建利用服务器端渲染和网页预渲染的应用程序。
- 第 10 章、讨论
Angular
框架的未来前景,如无区域变更检测和完全基于信号的应用程序, 同时还会探索一些已经可用的新特性,如新模板语法和组件的延迟加载。
建议读者从头至尾阅读本书;不过,在阅读完前两章后,开发者可以自由选择阅读他们最感兴趣的章节。
关于代码
本书包含许多源代码示例,这些示例有的以编号列表形式呈现,有的与正文混排。 在这两种情况下,源代码都采用像这样的等宽字体进行排版,以便与普通文本区分开来。 有时,代码还会加粗显示,以突出与本章前面步骤相比发生了变化的代码,比如在向现有代码行添加新功能时。
在许多情况下,原始源代码已经过重新格式化;我们添加了换行符并重新调整了缩进,以适应本书的可用页面空间。 在极少数情况下,即便这样仍不够,列表中会包含续行标记(→)。此外,当在正文中描述代码时,源代码中的注释通常会从列表中删除。 许多代码列表都配有代码注释,以突出重要概念。
请注意:在第 10 章中,我们采用了不同的方式,在已经构建好的代码上探索一些实验性特性; 读者若想查看两个版本的代码,可以使用源代码存储库,并切换到名为 “chapter-10” 的分支来查看另一个版本。
本书示例的完整代码可从曼宁出版社(Manning)网站 https://www.manning.com/books/modern-angular 以及 GitHub 上的 https://github.com/Armenvardanyan95/modern-angular-hrms 下载。
关于作者
阿尔缅・瓦尔达尼扬(Armen Vardanyan)是 Angular
领域的谷歌开发者专家,也是一名拥有八年经验的前端团队负责人。
他撰写有关 Angular
、TypeScript
、RxJS
、NgRx
及其他相关技术的文章,有时也会在会议上作为演讲者亮相。
> 返回扉页