关于angularjs依赖注入的整理
初学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依赖注入的整理的更多相关文章
- AngularJS依赖注入
<html> <head> <meta charset="utf-8"> <title>AngularJS 依赖注入</tit ...
- AngularJS 依赖注入
依赖注入(Dependency Injection,简称DI)是一种软件设计模式,在这种模式下,一个或更多的依赖(或服务)被注入(或者通过引用传递)到一个独立的对象(或客户端)中,然后成为了该 ...
- AngularJS开发指南10:AngularJS依赖注入的详解
依赖注入是一种软件设计模式,用来处理代码的依赖关系. 一般来说有三种方法让函数获得它需要的依赖: 它的依赖是能被创建的,一般用new操作符就行. 能够通过全局变量查找依赖. 依赖能在需要时被导入. 前 ...
- (五)Angularjs - 依赖注入
如何找到API? AngularJS提供了一些功能的封装,但是当你试图通过全局对象angular去 访问这些功能时,却发现与以往遇到的库大不相同. 比如,AngularJS暴露了一个全局对象:angu ...
- AngularJS - 依赖注入(Dependency Injection)
点击查看AngularJS系列目录 转载请注明出处:http://www.cnblogs.com/leosx/ 依赖注入 依赖注入是软件设计模式中的一部分,用于处理组件是如何得到它说依赖的其它组件的. ...
- angularjs 依赖注入--自己学着实现
在用angular依赖注入时,感觉很好用,他的出现是 为了"削减计算机程序的耦合问题" ,我怀着敬畏与好奇的心情,轻轻的走进了angular源码,看看他到底是怎么实现的,我也想写个 ...
- AngularJS——依赖注入
依赖注入 依赖注入(DI)是一个经典的设计模式, 主要是用来处理组件如何获得依赖的问题.关于DI,推荐阅读Martin Flower的文章(http://martinfowler.com/art ...
- 个人对于angularjs依赖注入的理解
依赖注入(Dependency Injection,DI),作者认为本文中所有名词性的"依赖" 都可以理解为 "需要使用的资源". 对象或者函数只有以下3种获取 ...
- angularjs 依赖注入原理与实现
在用angular依赖注入时,感觉很好用,他的出现是 为了“削减计算机程序的耦合问题” ,我怀着敬畏与好奇的心情,轻轻的走进了angular源码,看看他到底是怎么实现的,我也想写个这么牛逼的功能.于是 ...
随机推荐
- sftp 服务器外网访问设置
这个是需要在本机上设定用户名的.根据不同的用户权限.然后让不同的人来到本机上取得数据. 参考一下有用的文章:http://www.ericstockwell.com/?p=54 (强烈建议 ...
- ThinkPHP中连接mysql数据库的四种实用和通用的连接方法
ThinkPHP内置了抽象数据库访问层,把不同的数据库操作封装起来,我们只需要使用公共的Db类进行操作,而无需针对不同的数据库写不同的代码和底层实现,Db类会自动调用相应的数据库适配器来处理.目前的数 ...
- Android RecyclerView完全解析
RecyclerView完全解析 (一) 前言 话说RecyclerView已经面市很久,也在很多应用中得到广泛的使用,在整个开发者圈子里面也拥有很不错的口碑,那说明RecyclerView拥有比Li ...
- SQL 网文链接
使用自定义表类型(SQL Server 2008) http://www.cnblogs.com/chenxizhang/archive/2009/04/28/1445234.html
- 读书笔记:《HTML5开发手册》Web表单
这是补充HTML5基础知识的第五篇内容,其他为: 一.HTML5-- 新的结构元素 二.HTML5-- figure.time.details.mark 三.HTML5-- details活学活用 四 ...
- 结构-行为-样式 - Angularjs 环境下Ztree结合JqueryUI实现拖拽
新的项目中有一个需求是要求客户标签可以自定义,于是就想到了客户体验,让客户自己拖拽标签进行组合查询.但是理想很丰满,现实很骨感.一开始就遇到了问题,各个插件之间的结合问题,折腾一翻之后终于实现了这个功 ...
- java 企业网站源码模版 有前后台 springmvc SSM 生成静态化
java 企业网站源码 前后台都有 静态模版引擎, 代码生成器大大提高开发效率 系统介绍 点击:获取地址 : 1.网站后台采用主流的 SSM 框架 jsp JSTL,网站后台采用freemaker静态 ...
- Redmine插件及使用
Plugins Plugin list A full list of available Redmine plugins can be found at the Plugin Directory. M ...
- Python datetime模块的datetime类
datetime模块定义了下面这几个类: datetime.date:表示日期的类.常用的属性有year, month, day. datetime.time:表示时间的类.常用的属性有hour, m ...
- 【SQL】T-SQL基本语法复习
数据库基本的几个对象 数据表.视图.存储过程.索引.触发器.函数 增删改查 Insert into test(name,sex,ago) values ('陈三','男',20) Update tes ...