`
huangyongxing310
  • 浏览: 490453 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

AngularJS中service,factory,provider的区别

阅读更多
AngularJS中service,factory,provider的区别

在一个分层良好的 Angular 应用中,Controller 这一层应该很薄。也就是说,应用里大部分的业务逻辑和持久化数据都应
该放在 Service 里。(就是为了Controller 这一层做得很薄)


Angular 提供了3种方法来创建并注册我们自己的 service。(三都是为应用提供服务的)
Factory
Service
Provider

factory
用 Factory 就是创建一个对象,为它添加属性,然后把这个对象返回出来。你把 service 传进 controller 之后,在 controller
里这个对象里的属性就可以通过 factory 使用了。(也是单例的,因为它也service,只会实例化一次)




service
在Angular里面,services作为单例对象在需要到的时候被创建,只有在应用生命周期结束的时候(关闭浏览器)才会被清除。
而controllers在不需要的时候就会被销毁了。
Service 是用"new"关键字实例化的。因此,你应该给"this"添加属性,然后 service 返回"this"。你把 service 传进
controller 之后,在controller里 "this" 上的属性就可以通过 service 来使用了。(就是说service内部已经给你一个返回的对象
"this"了,你要做的就是住这个"this"对象添加属性和方法)




Provider
1.Providers 是唯一一种你可以传进 .config() 函数的 service。当你想要在 service 对象启用之前,先进行模块范围的配置,
那就应该用 provider。如果用factory或service你要在Controller中对其进行设置参数,但不符合使Controller 做薄的原则。
2.如果你需要在你的服务对象可以在你的应用程序之外任何地方都可用之前改变它的某些部分,这是非常重要的。
3.用于产生一个可配置的 Service,由两部分组成。第一部分的变量和函数是可以在 app.config 函数中访问的,可以在它们被
其他地方访问到之前来修改它们。第二部分的变量和函数是通过 $get() 函数返回的,可以在任何传入了该 provider 的控制器
中进行访问的。
4.Angular里面,config会比Provider后执行(先有对象才有参数可以配置)。
5.Provider只是多了一个可以用.config()方法的功能。符合使Controller 做薄的左原则。
6.也是单例的,因为它也service,只会实例化一次




参考原文:http://www.oschina.net/translate/angularjs-factory-vs-service-vs-provider
参考原文:http://www.tuicool.com/articles/rABfUvm
  • 大小: 93.5 KB
  • 大小: 14 KB
  • 大小: 172.4 KB
分享到:
评论

相关推荐

    AngularJS 之 Factory vs Service vs Provider - 技术翻译 - 开源中国社区1

    Provider是AngularJS中最灵活的服务创建方式,它允许我们在应用程序启动阶段进行配置。Provider是在`.config()`函数中使用的,这意味着它们可以依赖于应用程序的配置信息。Provider的实例在运行时通过`.get()`方法...

    AngularJS中serivce,factory,provider的区别 - I have a dream - 开源中国社区2

    在AngularJS中,服务(Service)、工厂(Factory)和提供者(Provider)是三种不同的方式来创建可注入的对象,它们都是依赖注入系统的一部分,用于在应用程序的不同组件之间共享数据和服务。下面将详细介绍这三者的...

    angularJS Provider、factory、service详解及实例代码

    本文将详细讲解AngularJS中的Provider、Factory和服务,并通过实例代码进行对比,以便更好地理解它们的工作原理。 1. **Provider** Provider是最强大的服务创建方式,因为它允许我们在应用配置阶段进行配置。`$...

    AngularJS服务service用法总结

    AngularJS为开发者提供了三种创建服务的方式:使用内置的$provider、使用module中的service方法和使用module中的factory方法。下面将分别介绍这三种方式的用法。 使用$provider是最灵活的服务创建方式。它允许...

    详解Angular中的自定义服务Service、Provider以及Factory

    Angular中的自定义服务Service、Provider以及Factory详解 在Angular中的自定义服务中,有三种方式可以实现服务的复用性,即Service、Provider和Factory。这些方法可以提高Angular代码的复用性和可维护性。 Factory...

    angularJS——三种自定义service方法

    本篇将详细讲解AngularJS中三种自定义服务的方法:factory、service和provider,以及如何通过它们实现一个数的立方功能。 1. **Factory方法**: Factory是最常用的服务创建方式,它允许我们返回一个值,这个值可以...

    AngularJS之自定义服务详解(factory、service、provider)

    本文将详细介绍AngularJS中创建自定义服务的三种方式:factory、service、provider,并通过实例来展示它们的使用方法。 1. 自定义服务的三种方式: AngularJS提供了多种方法来创建自定义服务,主要有以下三种: -...

    angularJs demo 各种基本用法

    自定义服务可以通过`factory`、`service`、`provider`等方式创建。 **指令(Directive)**: 指令是AngularJS的一个创新特性,它们扩展了HTML,让DOM元素具备更丰富的行为。常见的内置指令有`ngRepeat`(用于迭代...

    AngularJS 中文API参考手册.zip_API_angularjs_angularjs api

    我们可以通过`angular.service()`, `angular.factory()`, 或 `angular.provider()`来创建自定义服务。 **四、指令(Directives)** 指令是AngularJS中的一个重要特性,它们扩展了HTML,使其能够表达应用程序的行为...

    AngularJS的-查询列表

    本教程将深入探讨如何在AngularJS中创建和操作查询列表,这对于初学者来说是理解和掌握AngularJS功能的关键步骤。 1. **双向数据绑定**: AngularJS的核心特性之一是双向数据绑定,这使得视图和模型之间的数据可以...

    AngularJS API常用方法示例

    `service`基于构造函数,`factory`返回一个对象,而`provider`在配置阶段提供配置,运行阶段返回服务。 以上仅是AngularJS API的一部分,实际开发中还有许多其他功能,如`directives`(自定义指令)、`filters`...

    AngularJS 学习资料

    在AngularJS中,服务是应用的重要组成部分,用于封装业务逻辑和操作。它们提供了管理状态、执行计算以及与其他外部资源交互的能力。《AngularJSServices》这本书深入探讨了如何设计、构建和服务,并对其进行了全面的...

    AngularJS 高级程序设计编程学习代码

    通过`.service()`, `.factory()`, 或 `.provider()`方法可以创建自定义服务。 **6. 视图和路由** AngularJS的`ngView`指令结合`$routeProvider`服务,实现了视图的动态加载和路由管理。通过定义路由规则,我们可以...

    angularjs高级程序设计 代码

    服务可以通过`factory`、`service`、`provider`等方式定义。 4. **指令(Directives)**:指令允许我们扩展HTML,创建自定义的DOM元素或属性。如`ngRepeat`用于数据遍历,`ngIf`控制元素的显示和隐藏。 5. **数据...

    angularjs前端框架

    - **服务创建**:使用`.service()`、`.factory()`或`.provider()`来定义服务。 - **服务注入**:在控制器或其它服务中通过构造函数参数注入服务。 ##### 3. 模板 AngularJS使用HTML作为模板语言,通过指令和表达式...

    解决angularjs service中依赖注入$scope报错的问题

    AngularJS允许开发者在服务(Service)、控制器(Controller)和工厂(Factory)中注入依赖,例如内置的服务、自定义的服务或组件。在某些情况下,开发者可能会尝试将$scope对象注入到服务中,这将导致依赖注入机制发生...

    《angularJs深度剖析与最佳实践》源码

    源码中会有各种服务的实现,如`factory`、`service`、`provider`等不同创建方式的示例。 5. **模块**:AngularJS的模块(`angular.module`)用于组织应用,它们可以包含控制器、服务、指令等。源码将展示如何创建和...

    angularjs常见面试题.pdf

    7. **factory、service和provider的区别**: - **service**:使用构造函数创建单例对象,继承自`$rootScope`,提供简单共享数据和服务的方法。 - **factory**:返回一个值(对象、函数、值等),可以创建更复杂的...

Global site tag (gtag.js) - Google Analytics