AngularJs几种服务区别

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

内容简介:下面说说这几种函数之间的区别:现在我们开始看怎么创建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服务, 更多详细可见另外一篇文章。


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

查看所有标签

猜你喜欢:

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

Windows API编程范例入门与提高

Windows API编程范例入门与提高

东方人华 / 清华大学出版社 / 2004-1-1 / 38.00

本书通过大量实用、经典的范例,以Visual Basic为开发平台由浅入深地介绍了Windows API编程的基本方法和大量的实用技巧。本书采用实例带动知识点的形式,使读者快速入门并逐步得到提高。本书每节即是一个实例,操作步骤详尽,所用到的源文件均可在网站下载。读者可以按照操作步骤完成每个实例的制作,并根据自己的喜好进行修改、举一反三。 本书内容翔实,凝结了作者多年的编程经验,既适合......一起来看看 《Windows API编程范例入门与提高》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具