我为什么选择 Angular

2025-05-27

我为什么选择 Angular

TL;DR

我选择 Angular 是因为我们是一个很棒的团队。它提供了一个功能齐全的平台,能够处理兼容性、可维护性和可测试性等非功能性需求,而我则专注于用户。

Angular 解决了什么问题?🤔

前端开发变得越来越复杂。

自从我们认识到网络的潜力以来,我们的界面变得更加丰富,我们的功能变得更加复杂,但随着我们的需求变得越来越大,我们面临的挑战也越来越大。

为了让您了解,以下是我今天构建大型企业应用程序时必须考虑的一些方面:

  • A11Y ♿️:让每个人都能访问网站,包括但不限于色盲、视力障碍、运动障碍或听力障碍人士。跨浏览器💻:确保您的网站在几乎所有浏览器上都能无缝运行,或至少逐步兼容:Chrome、Safari、Edge、Internet Explorer 等。
  • 自适应🖼:提供可适应各种屏幕尺寸(电视或小型设备)、分辨率(视网膜、2x 图像)和类型(手机、平板电脑、台式机)等的 UI 和 UX。
  • 多语言👄:构建可以适应不同语言结构的网站,例如 RTL 和 LTF、复数、货币等。
  • 性能🏃‍♀️:创建可以在不同网络条件下(例如 3G 和低 RAM 设备)及时呈现的网站。

这还只是针对最终用户而言的——开发人员还必须处理很多事情:

  • 可维护性👩‍💻:处理可以轻松达到数百万行代码的代码库,同时确保在模块化、脚手架和标准方面符合适当的开发人员人体工程学。
  • 构建🚜:确保您的应用程序包是轻量级的,这样您就不会超出会影响性能的尺寸预算,并密切关注任何编译错误和构建时间。
  • 可测试性🧪:确保单元测试和端到端测试都能完美运行,同时确保尽管应用程序很复杂,但创建新的测试用例仍然很简单。

请注意,对于某些应用程序,这只是您需要的内容的摘录,而对于其他一些应用程序,您可以完全忽略这些要求。

对于初次加入软件行业的人来说,这实在令人难以承受。

作为一名专业人士,我有责任了解这些挑战并知道如何应对。然而,我不想每次创建新应用时都花几个小时去弄清楚。🤷‍♂️

这就是我的问题,也是 Angular 最擅长的。

Angular 能做什么?🤔

Angular 做了很多事情,但也许这张图片可以给你一个更好的想法:

上面这些漂亮的图标代表了 Angular 提供的一组工具。我们来看一下其中的一些:

  • 💻 CLI:据大型企业称,Angular CLI 是 Angular 最棒的功能之一。它允许你仅用一个简单的命令就能搭建组件、服务和模块,但这本身当然没什么特别之处。CLI 的真正价值在于一些更强大的命令,例如 ng add @angular/pwa 可以自动将你的应用转换为渐进式 Web 应用,或者 ng update @angular/core @angular/cli 可以自动将你的应用更新到最新的 Angular 稳定版本。所有这些都得益于 Schematics 的强大功能。
  • 🚜 Schematics:你可以将 Schematics 视为 Angular 的 Yeoman,但拥有超强的能力。Schematics 是一个代码生成器,它允许你创建和转换代码。例如,你无需一遍又一遍地创建 TypeScript 模型,而是可以创建一个 Schematics,它会为你生成包含访问器等所有功能的整个类。然而,这只是一个简单的例子——你也可以将它用于复杂的逻辑,例如重构一个大型应用程序,使其所有组件都使用外部模板而不是内联模板!手动操作花了我 2 个小时,而使用 Schematics 只需几分钟 😙。
  • 🖼 Angular Material:这是 Google 开发的组件库,可让您访问一组经过全面测试且开箱即用的组件。它最初以 Angular Material 设计系统为主题,但也提供了 CDK(组件开发工具包),让您有机会使用所需的任何设计系统。

  • 📞 Http 模块:Angular 团队深知 HTTP 调用存在于大多数 Web 应用程序中。因此,Angular 提供了一个简化 HTTP 调用的模块。它基于 Observables,因此您可以按照自己喜欢的方式编写调用。此外,它还具有 HTTP 拦截器,可让您轻松转换传入/传出请求。
  • 👄 i18n:Angular 还通过 Angular CLI 提供了内置功能,帮助您创建多语言网站。它会读取您的模板并生成可用于文本、数字、日期和货币翻译的 XLIFF(或 XMB)文件。设置好翻译后,CLI 将为您创建相应的构建,无需任何额外操作。
  • 🧪 Karma、Jasmine 和 Protractor:单元测试和端到端测试是 Angular 团队的首要任务。因此,每个使用 CLI 创建的 Angular 项目中都已配置 Karma。您可以根据需要使用 Jasmine,也可以切换到任何其他您喜欢的框架。最终,您只需担心编写测试即可。
  • 🗺 路由器模块:无论您是使用延迟加载、预加载还是按需加载路由,Angular CLI 都为您提供了一个便捷的模块。它提供了一个可维护的结构,使路由配置繁重的应用也能轻松处理。您只需关注“做什么”,而 Angular 则关注“怎么做”。
  • 💥 响应式表单模块:表单是 Web 应用中最常见的组件之一。有些表单相当简单,例如登录表单;而有些表单则比较复杂,某些字段值依赖于其他字段值,并且这些值需要在客户端和服务器端实时验证……😲。响应式表单模块可以帮助您减少实现此目的所需的样板代码量,同时允许您将逻辑从模板中分离出来。

当然,其中一些功能还远远不够完美,但就目前而言,它们为我节省了大量时间。

那我应该用 Angular 吗?🤔

工具是否合适取决于您当前的需求、情况和挑战。

对我来说,Angular 非常适合应对大型挑战。不过,Web 本身不就是一个巨大的挑战吗?Ryan Grove提供了一个有趣的观点:

如果今天我们有更好的工具来帮助我们做好这件事,那为什么不使用它们呢?一个很好的理由是成本。对一些人来说,掌握 Angular 可能比学习其他框架花费更多的时间。

最后,是否付费取决于你,不过亨利·福特的名言就派上用场了:

如果您需要 Angular 但没有学习它,您会发现您已经学会了如何处理 Angular 解决的每一个问题,但您仍然不了解 Angular。


感谢阅读!🎉

如果你对 Angular 有任何疑问,或者不确定 Angular 是否适合你,请联系我!我非常乐意帮你找到答案!🚀

文章来源:https://dev.to/angular/why-i-chose-angular-hk
PREV
Git 命令速查表
NEXT
使用战术 DDD 和 MonoRepos 实现可持续的 Angular 架构?