AngularJS中service,factory,provider的区别(转载:http://my.oschina.net/tanweijie/blog/295067)
2015-12-10 17:18
447 查看
目录[-]
一、service引导
二、service
1、factory()
2、service()
3、provider()
这就是为什么使用controllers在应用里面传递数据不可靠的原因,特别是使用routing的时候。Services are designed to be the glue between controllers, the minions of data, the slaves of functionality, the worker-bees of our application(就是说services在应用的controllers、 方法、数据之前起到了很关键的作用)
现在我们开始看怎么创建service。每个方法我们都会看到下面两个一样的参数:
name-我们要定义的service的名字
function-service方法
他们都创建了相同的底层对象类型。实例化后,他们都创建了一个service,这些对象没有什么功能上的差别。
factory()让我们通过返回一个包含service方法和数据的对象来定义一个service。在service方法里面我们可以注入services,比如 $http 和 $q等。
?
在应用里面使用factory()方法
在应用里面可以很容易地使用factory ,需要到的时候简单地注入就可以了
?
什么时候使用factory()方法
在service里面当我们仅仅需要的是一个方法和数据的集合且不需要处理复杂的逻辑的时候,factory()是一个非常不错的选择。
注意:需要使用.config()来配置service的时候不能使用factory()方法
和factory()方法一样我们也可以在函数的定义里面看到服务的注入
?
这里的功能和使用factory()方法的方式一样,service()方法会持有构造函数创建的对象。
在应用里面使用service()方法
?
什么时候适合使用service()方法
service()方法很适合使用在功能控制比较多的service里面
注意:需要使用.config()来配置service的时候不能使用service()方法
不像上面提到的方法那样,我们在定义的this.$get()方法里面进行依赖注入
?
在应用里面使用provider()方法
为了给service进行配置,我们可以将provider注入到.config()方法里面
?
这样我们就可以和其他方式一样在应用里面使用这个service了
?
什么时候使用provider()方法
当我们希望在应用开始前对service进行配置的时候就需要使用到provider()。比如,我们需要配置services在不同的部署环境里面(开发,演示,生产)使用不同的后端处理的时候就可以使用到了
当我们打算发布开源provider()也是首选创建service的方法,这样就可以使用配置的方式来配置services而不是将配置数据硬编码写到代码里面。
还可以看看这篇翻译:http://www.oschina.net/translate/top-10-mistakes-angularjs-developers-make
点击查看完整的代码:https://gist.github.com/auser/7743235
一、service引导
二、service
1、factory()
2、service()
3、provider()
一、service引导
刚开始学习Angular的时候,经常被误解和被初学者问到的组件是 service(), factory(), 和 provide()这几个方法之间的差别。This is where we'll start the twenty-five days of Angular calendar.二、service
在Angular里面,services作为单例对象在需要到的时候被创建,只有在应用生命周期结束的时候(关闭浏览器)才会被清除。而controllers在不需要的时候就会被销毁了。这就是为什么使用controllers在应用里面传递数据不可靠的原因,特别是使用routing的时候。Services are designed to be the glue between controllers, the minions of data, the slaves of functionality, the worker-bees of our application(就是说services在应用的controllers、 方法、数据之前起到了很关键的作用)
现在我们开始看怎么创建service。每个方法我们都会看到下面两个一样的参数:
name-我们要定义的service的名字
function-service方法
他们都创建了相同的底层对象类型。实例化后,他们都创建了一个service,这些对象没有什么功能上的差别。
1、factory()
Angular里面创建service最简单的方式是使用factory()方法。factory()让我们通过返回一个包含service方法和数据的对象来定义一个service。在service方法里面我们可以注入services,比如 $http 和 $q等。
?
在应用里面可以很容易地使用factory ,需要到的时候简单地注入就可以了
?
在service里面当我们仅仅需要的是一个方法和数据的集合且不需要处理复杂的逻辑的时候,factory()是一个非常不错的选择。
注意:需要使用.config()来配置service的时候不能使用factory()方法
2、service()
service()通过构造函数的方式让我们创建service,我们可以使用原型模式替代javaScript原始的对象来定义service。和factory()方法一样我们也可以在函数的定义里面看到服务的注入
?
在应用里面使用service()方法
?
service()方法很适合使用在功能控制比较多的service里面
注意:需要使用.config()来配置service的时候不能使用service()方法
3、provider()
provider()是创建service最底层的方式,这也是唯一一个可以使用.config()方法配置创建service的方法不像上面提到的方法那样,我们在定义的this.$get()方法里面进行依赖注入
?
为了给service进行配置,我们可以将provider注入到.config()方法里面
?
?
当我们希望在应用开始前对service进行配置的时候就需要使用到provider()。比如,我们需要配置services在不同的部署环境里面(开发,演示,生产)使用不同的后端处理的时候就可以使用到了
当我们打算发布开源provider()也是首选创建service的方法,这样就可以使用配置的方式来配置services而不是将配置数据硬编码写到代码里面。
还可以看看这篇翻译:http://www.oschina.net/translate/top-10-mistakes-angularjs-developers-make
点击查看完整的代码:https://gist.github.com/auser/7743235
相关文章推荐
- rpc rmi http
- PHP CURL访问HTTPS使用详解
- TCP/IP协议原理【转载】
- CentOS 7最小安装(文字界面)中设置连接网络
- Postman-Http请求模拟工具
- 《HTTP权威指南》– 9.识别和认证
- HTTP
- 使用socket发送http请求(GET/POST)
- 在局域网络内的某台主机用ping命令测试网络连接时发现网络内部的主机都可以连同,而不能与公网连通,问题可能是
- Lucene 简单手记http://www.cnblogs.com/hoojo/archive/2012/09/05/2671678.html
- Java程序避开SSL证书问题访问https网站
- 快速Android开发系列网络篇之Retrofit .
- 卷积神经网络CNN
- ASIHTTPRequest使用教程
- php之curl实现http与https请求的方法
- TCP的拥塞控制
- UDP网络程序设计
- HttpServletRequest对象介绍
- TCP/IP详解卷1 读书笔记:第二十二章 TCP坚持定时器
- Android网络视频播放器DEMO