发表于: 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属性注解
隐含地从函数参数名称(有警告)
明天计划的事情:
继续做任务
遇到的问题:
依赖注入似懂非懂
一些代码相关例子,看的很费解
收获:
依赖注入粗浅的理解
评论