AngularJs几种服务区别

栏目: 编程语言 · AngularJS · 发布时间: 5年前

内容简介:下面说说这几种函数之间的区别:现在我们开始看怎么创建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。每个方法我们都会看到下面两个一样的参数:

  1. name-我们要定义的service的名字
  1. 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服务, 更多详细可见另外一篇文章。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

区块链技术驱动金融

区块链技术驱动金融

阿尔文德·纳拉亚南、约什·贝努、爱德华·费尔顿、安德鲁·米勒、史蒂文·戈德费德 / 林华、王勇 / 中信出版社,中信出版集团 / 2016-8-25 / CNY 79.00

从数字货币及智能合约技术层面,解读了区块链技术在金融领域的运用。“如果你正在寻找一本在技术层面解释比特币是如何运作的,并且你有一定计算机科学和编程的基本知识,这本书应该很适合你。” 《区块链:技术驱动金融》回答了一系列关于比特币如何运用区块链技术运作的问题,并且着重讲述了各种技术功能,以及未来会形成的网络。比特币是如何运作的?它因何而与众不同?你的比特币安全吗?比特币用户如何匿名?区块链如何......一起来看看 《区块链技术驱动金融》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具