zoukankan      html  css  js  c++  java
  • Angular service, 服务


     
    早上开车上班, 发现车快没油了, 于是拐进加油站. 有一辆出租车也在加油..
     
    Angular service在一个应用里是以单例形式存在的. 这个单例的实例是由service factory(service工厂)创建的.
     
    • 加油, 就好比是一个 Angular service; 
    • 不论是我加的油, 还是出租车加的油, 都是从这个加油站同一个地下油罐取出来的同样的汽油. 大家使用的都是同一个汽油实例(单例);
    • 我的车与出租车共享了加的汽油的属性, 比如: 都是93#汽油, 掺水的比例, ...
    因此, 在Angular里, 如下情况会考虑使用service:
    • 可重用的, 纯业务逻辑的代码, 与$scope无关的代码可以被写成service. DRY.
    • 用service共享数据, 因为在应用中, 对service的依赖都是引用同一个service实例
    • ...
    ------
    开头写到 service 是由 service factory(是一个函数) 所创建, service factory 就好比上图的那2个油桶.
     
    在Angular体系中, service factory 又是由 service provider(是构造函数) 所创建, service provider 就好比这个加油站.
    设想如果加油站很大, 必须有一个指路牌, 标识出在哪儿加93#汽油. service provider 函数必须包含名为 $get 的属性, 它指向 service factory 函数. 就好比, $get 这个路标指示我们在哪儿找到93#加油点.
     
     
    Angular 提供了5个创建service的方法, 由繁到简, 或具有特殊功能
    • .provider(provider)
    • .constant(obj)
    • .value(obj)
    • .factory(fn)
    • .service(class)
    主要相比较的为 provider(), factory(), service() 3个函数.
    用它们定义service时, 写法各不相同.
    最终实例化的方式也不同.
    provider() 好比整个加油站, 可配置性强, 程序员可以尽情发挥..
    factory(), service() 次之, 哪里需要哪里搬, 定义简单, 
     
    ----
     
    var provider = function() {
     
      this.$get = function factory() {
        
      }
     
    }
    

     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    shell:读取文件的每一行内容并输出
    shell中set命令
    shell中declare命令
    MySQL MID()函数用法
    mysql的取整函数
    二分查找算法
    zookeeper安装和使用
    Redis 集群--------Redis-cluster
    ehcahe + redis 实现多级缓存
    Redis事物
  • 原文地址:https://www.cnblogs.com/patrick-holynova/p/3727154.html
Copyright © 2011-2022 走看看