内容简介:下面说说这几种函数之间的区别:现在我们开始看怎么创建service。每个方法我们都会看到下面两个一样的参数:他们都创建了相同的底层对象类型。实例化后,他们都创建了一个service,这些对象没有什么功能上的差别。
$provide factory service constant value
下面说说这几种函数之间的区别:
函数 | 定义 | 适合场景 |
---|---|---|
provider(name, Object OR constructor() ) |
一个可配置的、有复杂逻辑的服务。如果你传递了一个对象,那么它应该有一个叫 $get
的函数返回这个这个服务的实例。否则的话,Angular 假设你已经产生了一个构造函数,当被调用时,创建这个实例 此函数是创建服务最具有变现力,相应地也是最复杂的,对于大多数情况,都没必要使用此函数,不过其对于测试和调试是极其有用的。 |
1.当我们希望在应用开始前对service进行配置的时候就需要使用到provide()。比如,我们需要配置service在不同的部署环境里面(开发,演示,生产)使用不同的后端处理的时候就可以使用到了。 2. 当我们打算发布开源provide()也是首选创建service的方法,这样就可以使用配置的方式来配置service而不是将配置数据硬编码写到代码里面。 |
factory(name, $getFunction()
) |
一个不可配置的、简单逻辑的服务。你指定一个函数,当被调用时,返回服务实例。你 可 认 为 是 provider(name,{$get:$getFunction()})
|
在service里面当我们仅仅需要的是一个方法和数据的集合且不需要处理复杂的逻辑的时候,factory()是一个非常不错的选择。**注意:**需要使用.config()来配置service的时候不能使用factory()方法 |
service(name, constructor() ) | 一个不可配置的、复杂逻辑的服务。有点类似于带构造函数的 provider,Angular 调用它来创建服务实例。 | service()方法很适合使用在功能控制比较多的service里面 |
在Angular里面,services作为单例对象在需要到的时候被创建,只有在应用生命周期结束的时候(关闭浏览器)才会被清除。而controllers在不需要的时候就会被销毁了。 这就是为什么使用controllers在应用里面传递数据不可靠的原因,特别是使用routing的时候。services在应用的controllers、 方法、数据之前起到了很关键的作用
现在我们开始看怎么创建service。每个方法我们都会看到下面两个一样的参数:
- name-我们要定义的service的名字
- function-service方法
他们都创建了相同的底层对象类型。实例化后,他们都创建了一个service,这些对象没有什么功能上的差别。
至于在工程实践中选择何种形式的服务,可以遵循下列决策流程:
1. 需要全局的可配置参数 ==>Provider 2. 是纯数据,没有行为 ==>Value 3. 只new一次,不用参数 ==>Service 4. 拿到类,自己new出实例 ==>Factory 5. 拿到函数,自己调用 ==>Factory 复制代码
以上只是基本决策,更加敏捷的方式:
是纯数据,先用Value,当发现需要添加行为时,改写为Service;或当发现需要通过计算给出结果时,改写为Factory;当发现需要进行全局配置时,改写为Provider 复制代码
官方开发指南的对比表:
类型 | Factory | Service | Value | Constant | Provider |
---|---|---|---|---|---|
可以依赖其他服务 | 是 | 是 | 否 | 否 | 是 |
使用类型友好的注入 | 否 | 是 | 是 | 是 | 是 |
在config阶段可用 | 否 | 否 | 否 | 是 | 是 |
可以用于创建函数/原生对象 | 是 | 否 | 是 | 是 | 是 |
关于Angular服务, 更多详细可见另外一篇文章。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 服务端指南 服务端概述 | 微服务架构概述
- 微服务化之服务拆分与服务发现
- 微服务化之服务拆分与服务发现
- 小白入门微服务(4) - 服务注册与服务发现
- 服务端指南 服务端概述 | SOA 对比微服务架构
- MySQL服务启动时显示本地计算机上的MySQL服务启动后停止。某些服务在未由其它服务或。。。
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Visual Thinking
Colin Ware / Morgan Kaufmann / 2008-4-18 / USD 49.95
Increasingly, designers need to present information in ways that aid their audiences thinking process. Fortunately, results from the relatively new science of human visual perception provide valuable ......一起来看看 《Visual Thinking》 这本书的介绍吧!