初学angularjs阶段,刚刚看到菜鸟教程的angularjs依赖注入。现在整理一下:

1.含义:一个或更多的依赖(可以理解为模块关系依赖)或服务(分为内建服务[例如$http,$tiomeout等]和自建服务),被注入(或引用到)一个独立对象中,成为该对象的一部分。

举个栗子:①一个存在于社会中的人。很多事情不必亲自去做,社会为他提供了各种服务,例如图书馆,地铁,公交,公园等。他想乘坐地铁去某个地方,不必自己造地铁,只要花钱(注入)就可以使用这个服务。当然他也可以自己定制个性化服务(社会提供的服务可以理解为内建服务),他可以自己定制一个劳斯莱斯(自建服务),不去去苦哈哈的挤地铁了。

②同样的这个人,不仅是个体。更是各种关系(依赖)中的人。比如:张三想去某国内顶级医院看专家号,而自己的妻子的父亲正好和这个专家是熟人,那张三就可以轻松的看到专家号。而不去自己去排队。

③一个人可以动用社会的服务和自己经营的各种人际关系。去完成很多事情,而不必亲力亲为。而这些用社会的服务和自己经营的各种人际关系,成为这个人的一部分。

2.目的:高内聚,低耦合。

题外话:我怎么感觉是为了偷懒呢。自己想把自己的工作分给别人,但又要保证工作质量的做法。哈哈

3.分类:

1)内建服务:据说“AngularJS 内建了30 多个服务”。这是菜鸟教程里面一个关于服务的介绍:http://www.runoob.com/angularjs/angularjs-services.html

2)自建服务:同样是菜鸟教程的介绍:http://www.runoob.com/angularjs/angularjs-dependency-injection.html

虽然有例子,不过对于我这种小白来说,还是不清楚。所以上网整理一下相关资料,自建服务的方式主要由三种: Factory  Service   Provider:

①factory方法。该方法在函数里面定义了一个对象,然后给这个对象添加属性和方法,最后返回这个对象:

   factory也可以注入内建服务:

②service方法与factory方法的不同,service方法去掉了return,实例化了一个类:

  service也可以注入内建服务。同时factory返回的是对象,service"返回"的是类,factory返回的对象可以被注入到service中进行使用:

  

③provider是唯一一个可以传进 .config() 函数的 service。目的是产生一个可以配置的service。它可以在 service 对象启用之前,先进行模块范围的配置

3)最后,还要说一下。ps:不要把逻辑都写在controller里面,controller这一层应该很薄。因为controller在不用时(如:切换或者刷新页面时)就会被销毁、清空,而service在应用生命周期结束时(如:关闭浏览器时)才会被清空。所以应该使用service,然后把service注入到controller里面,而让controller起一个初始化的作用。

具体的原因看这里-这是开源中国上的对原文的翻译 :http://www.oschina.net/translate/angularjs-factory-vs-service-vs-provider    ; 如果你英语水平不错,可以看看原文,里面有原文链接,不过需要fq。

小白正在学习阶段,如果总结的那里有错误的地方,恳请大家一定指出来。

关于angularjs依赖注入的整理的更多相关文章

  1. AngularJS依赖注入

    <html> <head> <meta charset="utf-8"> <title>AngularJS 依赖注入</tit ...

  2. AngularJS 依赖注入

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

  3. AngularJS开发指南10:AngularJS依赖注入的详解

    依赖注入是一种软件设计模式,用来处理代码的依赖关系. 一般来说有三种方法让函数获得它需要的依赖: 它的依赖是能被创建的,一般用new操作符就行. 能够通过全局变量查找依赖. 依赖能在需要时被导入. 前 ...

  4. (五)Angularjs - 依赖注入

    如何找到API? AngularJS提供了一些功能的封装,但是当你试图通过全局对象angular去 访问这些功能时,却发现与以往遇到的库大不相同. 比如,AngularJS暴露了一个全局对象:angu ...

  5. AngularJS - 依赖注入(Dependency Injection)

    点击查看AngularJS系列目录 转载请注明出处:http://www.cnblogs.com/leosx/ 依赖注入 依赖注入是软件设计模式中的一部分,用于处理组件是如何得到它说依赖的其它组件的. ...

  6. angularjs 依赖注入--自己学着实现

    在用angular依赖注入时,感觉很好用,他的出现是 为了"削减计算机程序的耦合问题" ,我怀着敬畏与好奇的心情,轻轻的走进了angular源码,看看他到底是怎么实现的,我也想写个 ...

  7. AngularJS——依赖注入

    依赖注入    依赖注入(DI)是一个经典的设计模式, 主要是用来处理组件如何获得依赖的问题.关于DI,推荐阅读Martin Flower的文章(http://martinfowler.com/art ...

  8. 个人对于angularjs依赖注入的理解

    依赖注入(Dependency Injection,DI),作者认为本文中所有名词性的"依赖" 都可以理解为 "需要使用的资源". 对象或者函数只有以下3种获取 ...

  9. angularjs 依赖注入原理与实现

    在用angular依赖注入时,感觉很好用,他的出现是 为了“削减计算机程序的耦合问题” ,我怀着敬畏与好奇的心情,轻轻的走进了angular源码,看看他到底是怎么实现的,我也想写个这么牛逼的功能.于是 ...

随机推荐

  1. 动态加载与插件系统的初步实现(3):WinForm示例

    动态加载与插件系统的初步实现(三):WinForm示例 代码文件在此Download,本文章围绕前文所述默认AppDomain.插件容器AppDomain两个域及IPlugin.PluginProvi ...

  2. WPF界面设计

    WPF仿360卫士9.0界面设计   Chrome插件——一键保存网页为PDF1.0 http://www.cnblogs.com/bdstjk/p/3163723.html 仿照网上的一个代码写的, ...

  3. Dubbo源码学习--服务是如何引用的

    ReferenceBean 跟服务引用一样,Dubbo的reference配置会被转成ReferenceBean类,ReferenceBean实现了InitializingBean接口,直接看afte ...

  4. 利用HTML5的devicemotion事件实现手机摇一摇抽奖,年会抽奖

    摇一摇JS脚本逻辑:接下来是移动端JS脚本逻辑的实现,摇一摇的实现需借助html5新增的devicemotion事件,获取设备在位置和方向上的改变速度的相关信息,该事件的基本使用如下: if (win ...

  5. python数据类型以及模块的含义

    print(sys.path) #打印环境变量 print(sys.argv) #打印相对路径 print(sys.argv[1]) #打印对应的参数 1.在python最上有时候会导入os模块,表示 ...

  6. Vmware Vcenter6.0 全新安装及群集配置介绍

    介绍如何安装vsphere ESxi主机及将vmware vsphere5.5升级到vmware vsphere6.0的介绍,而今天呢,主要介绍vsphere vcenter,说到vsphere vc ...

  7. open live writer下载安装

    以前记笔记都是用Evernote,啥都记在上面.除了学习工作的以外,还有各种账号密码啦(这个真心有必要,再也不用各种试了),妈妈要我帮她下载的广场舞名字啦,我双十一要剁手的东西啦等等.很好用的,推荐! ...

  8. ubuntu 下 编译ffmpeg 3.1.1

    1,下载ggmpeg源码:http://ffmpeg.org/download.html 2.下载ndk ,百度 3.配置环境 3.1 编译FFMPEG时,出现了 ffmpeg yasm not fo ...

  9. 同盾安卓 Android应用 集成步骤:

    Android SDK 新版 Android SDK 旧版 1.点击下载最新SDK(当前版本3.0.3),并解压fraudmetrix-xxx.zip文件.解压后文件目录为: fm-core-xxx ...

  10. PRML 第一章mindmap

    PRML读了很长时间了,但是一直没有完全搞明白,很多概念都是不太清楚,于是从第一章开始重读.读的过程中会将这个内容结构用mindmap的形式记录下来,一是通过这种方式帮助自己理清楚思路,二是在之后可以 ...