发表于: 2021-09-30 23:59:04

0 1385


今天完成的事情:

依赖注入,之前其实看过,不过看完后没啥感觉

今天把依赖注入,重新进行了学习


依赖注入(Dependency Injection,简称DI)是一种软件设计模式,在这种模式下,一个或更多的依赖(或服务)被注入(或者通过引用传递)到一个独立的对象(或客户端)中,然后成为了该客户端状态的一部分。

该模式分离了客户端依赖本身行为的创建,这使得程序设计变得松耦合,并遵循了依赖反转和单一职责原则。与服务定位器模式形成直接对比的是,它允许客户端了解客户端如何使用该系统找到依赖


AngularJS 提供很好的依赖注入机制。以下5个核心组件用来作为依赖注入

  • value
  • factory
  • service
  • provider
  • constant



依赖注入
依赖注入(DI)是一种软件设计模式,处理组件如何获取其依赖关系。
AngularJS注入器子系统负责创建组件,解析它们的依赖关系,并根据请求将它们提供给其他组件。
使用依赖注入
DI遍布AngularJS。 可以在定义组件或为模块提供运行和配置块时使用它。

  • 诸如服务,指令,过滤器和动画之类的组件由注入工厂方法或构造函数定义。 这些组件可以注入“服务”和“值”组件作为依赖关系。

  • 控制器由构造函数定义,可以使用任何“服务”和“值”组件作为依赖关系注入,但是它们也可以提供特殊的依赖关系。

  • run方法接受一个函数,它可以注入"service","value"和"constant"组件作为依赖。 请注意,不能将"providers"注入运行块。

  • config方法接受一个函数,它可以注入"provider"和"constant"组件作为依赖。 请注意,无法将“服务”或“值”组件注入配置。



工厂方法
定义指令,服务或过滤器的方式是使用工厂函数。 工厂方法使用模块注册。 推荐的工厂声明方式是:

angular.module('myModule', [])
.factory('serviceId', ['depService', function(depService) {  // ...}])
.directive('directiveName', ['depService', function(depService) {  // ...}])
.filter('filterName', ['depService', function(depService) {  // ...}]);



模块方法
我们可以通过调用config和run方法指定要在模块的配置和运行时运行的函数。 这些函数是可注入的依赖关系,就像上面的工厂函数。

angular.module('myModule', [])
.config(['depProvider', function(depProvider) {  // ...}])
.run(['depService', function(depService) {  // ...}]);



依赖注解
AngularJS通过注入器调用某些功能(如服务工厂和控制器)。 需要注解这些函数,以便注入器知道要注入到函数中的服务。 有三种方法用服务名称信息注解代码:

  • 使用内联数组注解(首选)

  • 使用$inject属性注解

  • 隐含地从函数参数名称(有警告)




明天计划的事情:

继续做任务




遇到的问题:

依赖注入似懂非懂

一些代码相关例子,看的很费解




收获:

依赖注入粗浅的理解






返回列表 返回列表
评论

    分享到