发布于 2025-12-08 2 阅读
0

你可能错过的 Angular 简介 什么是 Angular 单页应用程序架构 是什么让 Angular 成为一个框架? 学习 Angular 开发 Angular 应用程序 Angular 的下一步是什么? 就这些了!

你可能错过的 Angular 简介

什么是 Angular

单页应用程序架构

是什么让 Angular 成为一个框架?

学习 Angular

开发 Angular 应用程序

Angular 的下一步是什么?

就这样吧,伙计们!

什么是 Angular

Angular 是一个基于 TypeScript 开发单页应用程序的框架。它由 Google 的 Angular 团队开发,并于 2016 年发布了稳定版本 2。它是 Google 开发的另一个框架 AngularJS 的完全重写版本。

Angular 使用了服务器端框架的常见功能,例如模块、依赖注入和类型化语言,并推荐使用按功能分类的文件夹结构,为您做出多项决策,包括设计和架构决策。这使得 Angular 开发入门略有难度,您可能会发现自己在做最简单的事情时也会寻求Angular 的方式。但它们也允许轻松扩展应用程序,并在大型开发团队中实现一致性开发。

单页应用程序架构

每个应用程序都有自己的架构,但所有单页应用程序最终都需要某些部分。

  • 用户界面层
  • HTTP 库
  • 逻辑
  • 路由器
  • 州经理

无论如何,这些都是构建完整 SPA 所需的最常见部分。参考

另一种查看 SPA 架构的方式是通过层:参考

  • 看法
  • 服务
  • 店铺
  • 领域

您可以看到两种方法之间的关系。

是什么让 Angular 成为一个框架?

如果您看一下架构,您会注意到 Angular 实际上为架构的每个部分都有一个模块或库。

这就是 Angular 成为一个框架的原因,它由多个模块组成,满足开发单页应用程序的需求。

与 React 或 Vue 相比,它们仅代表架构的视图部分或用户界面,您需要自己为应用程序的其他层选择最佳库。

  • 用户界面层的组件
  • HttpClient 作为 HTTP 库
  • 逻辑组件和服务
  • 路由器用于路由
  • 担任州经理

此外,还有其他库可以帮助您开发应用程序,例如:

  • JavaScript 动画
  • 模板驱动表单的表单
  • ReactiveForms 用于模型驱动的表单
  • i18n 用于国际化,本地化
  • 模板数据转换管道
  • 针对不同目标平台的平台模块(例如:浏览器、Webworker)
  • 身份验证和授权管理的防护
  • 用于快速设置、测试和构建的 CLI 工具
  • 还有更多...

学习 Angular

Angular 的s shaped学习曲线比较陡峭,这意味着你一开始可能会进展缓慢,因为除了框架本身(这个框架本身相当庞大且功能丰富)之外,你还需要学习如何使用一些工具。你需要一些时间来积累使用经验,但之后,你可能就不需要再学习其他任何东西了。

首先要说一下 Angular,有几种技术可能会让你一开始感到害怕:

  • 打字稿
  • ES2015(以及 ES2016、ES2017、ES2018)
  • 装饰器
  • 可观察对象
  • rxjs
  • 延迟加载
  • 主动光传输
  • 依赖注入
  • 并且列表还在继续...

对这些感到害怕完全正常,我的意思是……Angular 到底是什么?为什么就不能正常一点呢?

还有... Angular 风格指南。

这种设计选择在开发大型应用程序时很有价值,但即使在小型应用程序中也会使您受益。

如果你想全面了解 Angular 世界,《英雄之旅》教程是不错的选择。它会持续更新,并会一步步讲解最常用的功能。

现在我将对 Angular 所使用的最重要的、也是最有争议的工具进行一个简单的介绍。

打字稿

这是反对 Angular 最常见的论点,实际上,你完全可以不使用 Typescript 来开发 Angular 应用。但是,以下是一些理由,说明为什么 Typescript 可能会让你做得更好:

  • 自动依赖注入
  • ES2015+ 的优势
  • 装饰器
  • 类似 IDE 的体验

ES2015+

我们中的一些人仍在使用纯 ES5 开发应用程序。好吧,差不多是 ES5,因为我们总是在它之上使用一些东西,比如 lodash、jQuery 等等。但是,像 Webpack 或 Rollup 这样的构建工具现在已经相当普遍,你应该不会觉得使用它们不舒服。使用 ES2015+ 的功能,你甚至可能不需要jQuerylodash

装饰器

装饰器模式是一种设计模式,它允许将行为静态或动态地添加到单个对象,而不会影响同一类中其他对象的行为。ref在 Javascript 中,装饰器提案处于第一阶段,当时 Angular 团队宣布他们将在 ATScript(一种扩展 Typescript 的短暂语言)中使用装饰器。微软同意在 Typescript 中引入许多 ATScript 特性,以供 Angular 团队在 Angular 2 的开发中使用。它现在处于第二阶段,但其规范已发生变化。Typescript 仍然使用之前的规范,因为它被 Angular 所使用。

关于装饰器,最重要的一点是,它们最终只是函数,用于在类、属性或方法中添加行为。它们非常易于使用、学习和开发。如果你有 React 背景,你可以将它们视为某种高阶函数。

可观察对象(响应式编程和 rxjs)

这实际上应该是最难学的东西,但也是学了之后你生活中必不可少的东西之一。响应式编程是一种以异步方式处理数据的编程范式,允许获取计算操作的最终值。JavaScript 中响应式编程的实现将是 Observables,目前处于第一阶段,很快就会进入第二阶段。这意味着,可能几年后,所有主流的浏览器都会原生支持它。

rxjs 是一个实现其自己的 Observable 版本的库,它被 Angular 大量使用,特别是用于处理数据获取,因为 HttpClient 实例将返回一个可观察对象,并发出事件,因为 EventEmitter 从 Observable 扩展。

为了简化您的学习过程,每个 rxjs Observable 实例都包含一个方法,用于在 Observable 完成后将toPromise其值解析为 Promise 。处理用户事件时,这比较棘手,因为大多数事件永远不会完成。但您可以使用这种方法来处理数据获取,因为它们会在请求完成后完成。不过,最好先了解 rxjs Observable 及其操作符的使用方法。

延迟加载、AoT、依赖注入...以及 Angular 样式指南。

在使用 Angular 进行开发时,依赖注入是你必须了解的知识,但这在其他框架中也相当常见,尤其是在服务器端框架中。不过,如果你不知道依赖注入是什么,那么很快你就会明白,它是一种请求并获取某个类的实例的能力。这是一种非常简单的理解方式,但最终,它实际上就是这样的。

其他所有东西,你都可以用万事达卡。好吧,你可能没有。不过你不需要知道所有这些。当然,延迟加载和 AoT 会帮助你减少应用程序的包大小,但首先,还是先构建好应用程序吧。之后再考虑这些事情很容易,而且它们在开发初期并不是必需的。

关于 Angular 样式指南,嗯,这正是我喜欢 Angular 的地方,他们有自己的一套做事方法。有时间的话可以看看。在处理大型应用程序时,它肯定会对你有所帮助。

ngrx

我要说的ngrx是,在我看来,这是唯一一个真正与 Angular 深度集成的状态库。理解了 Flux 模式之后,它真的很容易上手。我甚至在 EggHead 上学习了 React+Redux 课程。所以,没错,Redux 就是我的使用方法。

开发 Angular 应用程序

我会在这里作弊,并使用 Angular-cli。

$ npm install -g @angular/cli
$ ng new demo-app
Enter fullscreen mode Exit fullscreen mode

这将生成开发 Angular 应用程序所需的所有文件,甚至会设置 Karma 作为单元测试框架,并使用 Protractor 进行端到端测试。为了启动新的应用程序,我将再次使用 Angular CLI。

$ npx ng serve
// or
$ npm start
Enter fullscreen mode Exit fullscreen mode

Angular-CLI 在包中创建了几个脚本,用于服务、构建和测试。

这将使用底层的 Webpack Dev Server 为 Angular 应用程序提供服务。Angular-CLI 是一款功能强大的工具,它允许您创建新项目、组件、服务、管道、模型以及开发 Angular 应用程序所需的几乎所有内容。

你必须注意到,使用 Angular-CLI 有一个缺点,那就是你无法直接配置构建配置。这是一个设计决策,它确实有其动机,但仍然如此。如果你想完全控制构建过程,你不应该这么做,因为 CLI 几乎可以为你完成所有事情,但如果你想要,你只需要配置ng eject项目即可。

使用 Angular-CLI 不会阻止您将 Angular 应用程序与其他框架(如 Electron、NativeScript 或 Ionic)集成。

Angular 的下一步是什么?

到目前为止,我们已经了解了 Angular 的几个关键特性,但未来还有很多功能即将推出。以下一些特性目前已部分可用或处于 Beta 版本,其中一些将在 Angular 的下一个版本中推出,还有一些将在之后陆续推出。

当然,路线图还包括一些优化和错误修复,但这些都是您将在下一个项目中使用的新功能。

就这样吧,伙计们!

感谢阅读。希望你喜欢。分享给你的朋友、同事、私信,并在评论区留言告诉我你的想法。

文章来源:https://dev.to/michaeljota/the-introduction-to-angular-you-may-be-missing-5gbp