【Angular架构】成为一名Angular架构师需要掌握的6个概念

这篇具有很好参考价值的文章主要介绍了【Angular架构】成为一名Angular架构师需要掌握的6个概念。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

每个Angular开发人员都应该深入探索六个概念,以便掌握Angular并设计出架构良好的应用程序。

Angular是最大的框架之一:它提供了很多开箱即用的功能,这意味着从上到下有很多概念可以掌握。

我认为每个Angular开发人员都应该深入探索六个特定的概念,以便掌握Angular并能够熟练地编写架构良好的应用程序。

不,知道它的源代码并不是我所需要的——尽管我个人不得不在少数情况下进行探索。

一种云组件中心架构

像Bit.dev这样的云组件中心通常用于发布、记录和组织Angular组件。我们使用它们来最大限度地重用代码,并构建可扩展的应用程序。

正如您在这篇文章中所看到的,一个好的Angular体系结构可以确保我们的代码库以一种能够在存储库中和跨存储库轻松共享和重用组件的方式构建。

 Exploring components published on Bit.dev

1) 模块/库体系结构

Angular的模块体系结构有点独特,可能是初学者最难完全掌握的部分之一。

最令人困惑的概念是,我们已经在它上面使用了一个模块架构:当然,我说的是ES导入。

因为Angular Modules添加了一个额外的逻辑分组层,所以保持它们尽可能多的相关性很重要。

但是,知道如何在定义良好的模块中分离和拆分应用程序的功能是构建Angular应用程序的基本部分。

不同类型的Angular模块

您应该注意不同类型的角度模块:

  • 声明/Widget模块(例如:UI组件、指令和管道的集合模块)
  • 服务模块(示例:HttpClientModule)
  • 路由模块
  • 域/功能模块
  • 核心/共享模块

我在下面的文章中详细介绍了每种类型:

  • Understanding Angular Modules
  • A quick but comprehensive guide for understanding the different types of Angular Modules

库还是模块?

我认为,我们可以在图书馆层面上进行这种区分:一个只有服务的图书馆,一个代表一条路线的图书馆,等等。

但是,编写模块还是库在很大程度上取决于您的项目类型,以及您使用的是单回购项目还是多回购项目

编写模块前要问自己的问题

在编写模块之前,有几个问题需要问自己:

  • 我在写什么样的模块?如果你不能回答这个问题,你应该熟悉我上面列出的不同类型的模块。
  • 你很可能需要一到两种类型的模块,所以答案很可能是两个模块:路由和服务
  • 这个模块应该是它自己的库,还是应该只是一个模块?这有点难回答:如果你使用的是monoreo,我的观点是,从长远来看,构建图书馆将是一个更好的选择

2) 组件、服务和指令之间的关注点分离

分离关注点在理论上很简单,但比看起来更难。从Angular.js时代起,我们就被教导要保持组件“精简”和服务“胖”,从根本上讲,最新版本没有什么实质性的差异。

理解什么属于组件,什么属于服务,以及为什么指令可能只是一个被低估的功能,仍然很重要。

状态

放置状态是理解数据是在组件外部访问和共享,还是本地和封装的问题。

  • 如果状态在组件之间共享,或者需要从服务访问,则将您的状态放在服务中。在这种情况下使用什么状态管理工具并不重要,只要它在服务中即可
  • 如果状态是本地的(例如表单)并且只在组件中使用,那么只需将其存储在组件中即可

DOM操作

大多数DOM操作可能发生在指令中。假设您正在向某个组件添加拖放功能。

当然,您可以创建一个组件并从中绑定事件,但此时,您需要混合两件事:

  • 组件的外观
  • 某个零部件的特征的行为方式

指令是Angular的终极可重用特性,我发现它们在我参与的几乎每个项目中都没有得到充分利用。指令可以用来减轻组件的很多责任。

练习:在LOC方面找到当前项目中最大的组成部分。它使用Renderer还是ElementRef?这种逻辑可能会被卸载到指令中。

3) 更改检测和渲染

Angular在重新渲染UI方面是一个相当神奇的框架。

不过,这是另一回事,优化它只在应该的时候重新渲染:这需要一些深入的知识和直觉。

作为一名Angular架构师,您可能应该知道:OnPush更改检测是优化性能的方法。但是事情不会总是如您所期望的那样工作,尤其是当您没有在模板中使用Observables和异步管道时。

掌握变化检测

为了掌握更改检测,重要的是从以下几点开始:

  • 将所有数据视为不可变的;使用Rx供电的状态管理库对此有很大帮助
  • 仅(或大部分)使用Observables来显示模板中的数据。如果您使用的是本地州,请使用BehaviorSubject

掌握更改检测是构建高性能应用程序的强制性步骤:

您不仅需要确保在需要时进行更新,而且还需要确保仅在需要时才进行更新

突破Angular的速度限制

减少重新渲染是保持应用程序快速高效的秘诀之一。不过,有时你可能想超越性能关键应用程序的限制:游戏、高频更新、大型复杂列表等。

你需要突破Angular的速度限制吗?好吧,你也可以这样做:由于Ivy的最新功能,删除Zone并通过手术更新你的UI。

我在下面的文章中描述了如何:

  • Quantum Angular: Maximizing Performance by Removing Zone
  • Experiment: removing Zone from Angular with minimal effort, to boost runtime performance.

4) 路由

路由不仅允许我们将SPA组织成多个虚拟页面,而且由于Angular的路由延迟加载功能,我们还可以按需加载应用程序的捆绑包。

如果您正在处理一个大型应用程序,并且捆绑包超过1MB,您可能知道为什么这一点如此重要。说真的,没有人想下载这么多数据来与你的应用程序交互。

路由不仅应该用于拆分顶级路由,还应该用于驱动UI的更小和更深的部分。

这允许您将捆绑包的内容拆分为主要路由,但也可以将应用程序的较小部分拆分为不需要在用户设备上下载的部分,直到用户提出请求为止。

示例:选项卡式组件

例如,假设您正在构建一个选项卡式用户界面,并且每个选项卡彼此独立:这是一种理想的情况,可以将每个选项卡拆分为自己的路由,并使用惰性加载只加载选定选项卡的内容。

再举一个例子?弹出菜单和模式!绝对没有必要将它们与初始捆绑包一起加载。如果用户没有请求它们,那么只在需要时加载它们。

如果您需要灵感,Angular Material的选项卡组件支持这种模式。

5) 表格

大多数CRUD应用程序基本上由许多表单组成。你很可能会花很多时间写表单,这就是为什么学好角度表单如此重要的原因。

您的大多数表单可能都应该使用ReactiveFormsModule模块,除非您有一个简单的控件,否则请放弃与ngModel的双向数据绑定。

Angular Forms API相当容易理解,掌握它主要是一个真正研究文档并了解其缺陷的问题。

使用Forms时需要注意的主要缺陷是它基本上是非类型化的。这可能是一个非常棒的功能中最令人讨厌的部分——所以你必须非常努力地确保你的表单符合你的数据结构类型。

6) RxJS

最后但同样重要的是,臭名昭著的RxJS。

我相信Angular最强大的功能之一是它与Rx和Functional Reactive Programming的深度集成。

要真正掌握Angular并解锁一个伟大的架构,您需要首先学习Rx,至少学习它最重要的运算符。如果不花几个小时了解Rx,很难成为一名完全熟练的Angular开发人员。

在编写Angular应用程序时,学习Rx将受益的主要原因有两个:性能和异步处理。

异步处理在现代高度交互式的应用程序中尤其困难:忘记Promise、setTimeout和setInterval,开始用Rx的方式做事。

掌握Rx的另一个重要原因是优化性能:当然,使用Async管道是一个开始,但有时这还不够。您可以通过仅允许通过管道重新渲染需要的事件来控制重新渲染。

Rx提供了多种运算符,有助于缓存和批处理,从而优化应用程序的性能:

  • 阅读我下面的文章,了解使用Rx的操作员和技术列表:
  • https://blog.bitsrc.io/rxjs-patterns-efficiency-and-performance-10bbf272c3fc

总结

这是一个简短的列表,列出了你需要深入研究的所有主题,以便成为一名精通Angular的开发人员,或者毕业成为一名架构师。

这还有很多,但归根结底,我们不要忘记,要真正掌握任何与网络相关的东西,你需要首先掌握基本知识:Javascript、CSS、设计模式、干净代码、web工具等。

如果你需要任何澄清,或者如果你认为有什么不清楚或错误,请留下评论!

文章链接:【Angular架构】成为一名Angular架构师需要掌握的6个概念 | 程序员云开发,云时代的程序员.

欢迎收藏【架构师酒馆】和【开发者开聊】文章来源地址https://www.toymoban.com/news/detail-771916.html

到了这里,关于【Angular架构】成为一名Angular架构师需要掌握的6个概念的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 程序员必须掌握哪些算法?——前端开发工程师需要掌握的算法

    一个程序员一生中可能会邂逅各种各样的算法,但总有那么几种,是作为一个程序员一定会遇见且大概率需要掌握的算法。作为一名前端开发工程师,今天就通过这个话题和文章来聊聊前端开发工程师需要掌握的算法有哪些呢。 算法(Algorithm) 是指解题方案的准确而完整的

    2024年02月15日
    浏览(67)
  • 如何成为一名开发人员——第 2 部分:非技术技能

    在第一部分中,我提到了成为开发人员所涉及的技术技能。现在我要谈一些非技术性的技能。 编程归根结底是将人类思想转化为机器逻辑的艺术。因此,一半的工作在于理解和表达人类思想! 事实上,沟通是作为开发人员可以培养的最重要的一项技能。想想这份工作有多少

    2024年02月19日
    浏览(42)
  • 大型医院云HIS系统:采用前后端分离架构,前端由Angular语言、JavaScript开发;后端使用Java语言开发 融合B/S版电子病历系统

    一套医院云his系统源码 采用前后端分离架构,前端由Angular语言、JavaScript开发;后端使用Java语言开发。融合B/S版电子病历系统,支持电子病历四级,HIS与电子病历系统均拥有自主知识产权。 文末卡片获取联系! 基于云计算技术的B/S架构的医院管理系统(简称云HIS),采用前后

    2024年02月03日
    浏览(48)
  • AI问答:前端需要掌握的设计模式/vue项目使用了哪些设计模式/vue项目开发可以使用哪些设计模式

    一、理解什么是设计模式 设计模式是对软件设计开发过程中反复出现的某类问题的通用解决方案。 设计模式是一个在软件设计领域中被广泛应用的概念,它指的是一套被公认为有效的解决特定问题的设计思路和方法。 设计模式更多的是指导思想和方法论,而不是现成的代码

    2024年02月09日
    浏览(64)
  • java 架构师需要掌握什么技能

    Java架构师是负责设计和实现复杂软件系统架构的专业人士,他们需要具备扎实的编程基础、丰富的项目经验和深厚的理论知识。以下是Java架构师应该掌握的核心技能: 深厚的技术栈 : Java基础知识 :精通Java语言本身及其核心特性,包括面向对象设计原则、集合框架、多线

    2024年04月27日
    浏览(42)
  • 前端知识(八)———前端需要掌握的技术有哪些方面

    前端开发需要掌握的技术包括以下几个方面: 1.HTML:HTML是网页的基础骨架,是网页内容的载体,负责网页内容的排列和布局。 2.CSS:CSS是网页的样式表,负责网页的外观和样式。 一般情况下HTML+CSS是在一起使用为了页面布局的,说到布局可能会需要用到PS和蓝湖等一类设计工

    2024年02月04日
    浏览(52)
  • 【前端学习路线】你一定需要掌握的热门前端技术栈

    这份学习路线并不完美,也不会有最终形态,正如前端不可预见、永无止境的未来。 转自鱼皮 💂 + 💻 = 👴🏽 建议先观看视频导读:https://www.bilibili.com/video/BV1nh411e7oG/ 前言 - 学编程需要的特质 前端学习七阶段 前端入门 巩固基础 前端工程化 前端优化 前端生态 前端求职 前

    2024年02月12日
    浏览(48)
  • 软件测试人需要掌握的测试知识架构体系(上)

    软件计划与可行性研究(问题定义、可行性研究);需求分析;软件设计(概要设计、详细设计);编码;软件测试;运行与维护。 一、软件的生命周期(SDLC) 1、生存周期划分 各阶段的任务彼此间尽可能相对独立,同一个阶段各项任务的性质尽可能相同,从而降低每个阶段任

    2024年02月10日
    浏览(38)
  • 怎么快速成为一名JAVA程序猿?

    想要在短期之内迅速成为一名合格的程序员,解决自身存在的问题才是正解.我发现这些问题影响了很多初学者,从一开始便没有走上正确的道路和保持正确的心态.        错误是编码的一部分,每个程序员都会犯很多错误,尤其是作为初学者,但这就是他们如何成长并成为一个

    2023年04月08日
    浏览(24)
  • 如何成为一名优秀的网络工程师?

    网工是一个很泛的职业,工作内容属性决定了它不会只在某一方面专精...那么,网络工程师的技术水平体现在哪些方面? 1、强大的网络设计能力 普通的网工只能维护别人设计好的网络,而自己却不具备网络设计能力 ,尤其是大型复杂网络。优秀的网工不仅要具备网络的运维

    2024年02月06日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包