Angular的依赖注入

你好,我是燕云长风 。
寓意:结合李白著名的边塞诗《关山月》取【燕云长风】—— 长风几万里,吹度玉门关。

依赖注入

什么是依赖性注入?依赖性注入其实是一种设计模式。

依赖性注入框架

Angular中提供了非常完整的DI框架,有三个主要角色:

Injector         Provider           Object  

    |                |                |

令牌 (注入者)         构建             依赖

Injector就是注入者,用它的API去创建你依赖的实例,但是怎么样创建呢?是通过构造函数创建,还是工厂函数创建或者其它方式。那就是Provider,它来告诉Injector如何去创建,那最后创建好的对象,其实就是你现在所处位置,比如组件、模块,它所需要的这种依赖,那么这个依赖其实就是你在程序中需要的某种类型的对象,依赖本身就是一种类型,你需要的是这种类型的对象。

依赖性注入进阶

Angular提供了层次结构型的依赖,父子结构型的。

父子关系有一种特点,当它在子池子找不到它的依赖性,它会去父池子里面找,这也解释了为什么在Module中Provider的东西,你在Module当中的Component也能用,而且在父组件中Provider的东西,子组件也能用。

依赖性注入的基础概念,就是如何不去关心我依赖对象的构建细节,把责任往上推,推到上级,直到入口函数,这样管理起来就非常麻烦,所以导致了依赖性注入框架的产生。

在Angular中依赖性注入框架,是这样的一个构架,它有注入者,注入者去构建这样一个池子,那么池子里面是通过Provider数组去了解这些具体实例应该怎么去构建,它了解细节,它知道使用工厂方法还是构造函数或者其他方式提供。提供好了以后,通过Injector去get你的类型,类型就是provide的东西,可以是任意类型,Provider有useValue,useFactory,useClass,UseExisting等。

我的个人博客

  • 燕云长风

我参与的系列项目

  1. NiceFish:美人鱼,这是一个微型Blog系统,前端基于Angular7.0 + PrimeNG7.1.0。(GVIP 码云最有价值的开源项目 3160 ☆)
  2. NiceFish-React:这是React版的实现,和 NiceFish Angular 版本保持风格一致。采用React Hooks 16.8.3 版本,使用TypeScript、Ant Design组件库以及Bootstrap v4.2.1 开发。 (7 ☆)
  3. OpenWMS-Frontend:OpenWMS项目前端基于 Angular 7.0 + PrimeNG 7.1.0。 (已推荐 199 ☆)

我的社交主页

燕云长风github

今天的分享就到这里,祝大家顺利,工作愉快,天天开心。

长风几万里,吹度玉门关。

你可能感兴趣的:(Angular的依赖注入)