初学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. C#基础原理拾遗——引用类型的值传递和引用传递

    C#基础原理拾遗——引用类型的值传递和引用传递 以前写博客不深动,只搭个架子,像做笔记,没有自己的思考,也没什么人来看.这个毛病得改,就从这一篇开始… 最近准备面试,深感基础之重要,奈何我不是计算机科 ...

  2. 【deep learning学习笔记】注释yusugomori的RBM代码 --- 头文件

    百度了半天yusugomori,也不知道他是谁.不过这位老兄写了deep learning的代码,包括RBM.逻辑回归.DBN.autoencoder等,实现语言包括c.c++.java.python ...

  3. 项目开发之分页---异步分页(ajax)

    PS:前面忘了给大家讲解后台需要做的 ,同步分页的时候,我们只需要定义一个方法,给前台传递一个page对象,前台接收到直接展示即可:异步分页要多一步,首先还是写一个方法,传递初始对象,后面的ajax返 ...

  4. C#调用百度地图API

    1.打开链接http://developer.baidu.com/map/jshome.htm这里有很多DEMO,或者你直接百度搜索"百度地图API",第一个就是.进入后有很多方向 ...

  5. 使用spring-data-mongodb操作mongodb

    mongodb.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="h ...

  6. codevs1028花店橱窗布置(费用流)

    这几天刚学了费用流,找到了这道题来练一练手. 题目: 题目描述 Description 假设以最美观的方式布置花店的橱窗,有F束花,V个花瓶,我们用美学值(一个整数)表示每束花放入每个花瓶所产生的美学 ...

  7. 简单字符串匹配 Brute

    /* 很简单 模式匹配的Brute-Force算法 Brute-Force算法实现模式匹配的思想是:从主串s=”s0s1…sn-1”的第一个字符开始和模式串t=”t0t1…tn-1”的第一个字符比较, ...

  8. Minicom配置及使用详解

    因为现在电脑基本不配备串行接口,所以,usb转串口成为硬件调试时的必然选择.目前知道的,PL2303的驱动是有的,在dev下的名称是ttyUSB*. minicom,tkterm都是linux下应用比 ...

  9. 系统不识别某些Android设备:adb devices不显示问题解决

    1.获取厂商android设备ID 电脑连接android设备,然后执行命令: system_profiler SPUSBDataType 2.将厂商ID添加到 adb_usb.ini 文件中 Mac ...

  10. Oracle odi 数据表导出到文件

    最近新客户要求,以EXCEL数据方式,将数据表的内容,通过AS2协议传输到客户那边,本来打算使用存储过程直接输出EXCEL,但一想,ODI这么强大的工具应该可以直接进行转换,所以参考了一下官方标准文档 ...