• 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() {
        
      }
     
    }
    

     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    Pipe
    An Easy Problem?!
    Kadj Squares
    Space Ant
    Intersection
    让网页变为可编辑状态
    typescript入门基础
    大家都能看懂的 canvas基础教程
    数组的foreach方法和jQuery中的each方法
    html单行、多行文本溢出隐藏
  • 原文地址:https://www.cnblogs.com/patrick-holynova/p/3727154.html
Copyright © 2020-2023  润新知