鍍金池/ 教程/ C++/ 通過(guò)服務(wù)和其它包交互
調(diào)試
初始文件
作用域設(shè)置、作用域和作用域描述符
在Atom中移動(dòng)
在Atom背后
Atom中的包
為什么選擇Atom?
從Textmate中轉(zhuǎn)換
小結(jié)
新手入門(mén)
折疊
代碼段
Hacking Atom
基本的自定義
Atom中的序列化
文本處理包
字?jǐn)?shù)統(tǒng)計(jì)包
所需工具
維護(hù)你的包
Atom基礎(chǔ)
深入鍵表(keymap)
配置API
使用Atom
自動(dòng)補(bǔ)全
面板
在Atom中寫(xiě)作
文本選擇
創(chuàng)建主題
圖標(biāo)
小結(jié)
開(kāi)發(fā)Node模塊
編輯和刪除文本
安裝Atom
通過(guò)服務(wù)和其它包交互
小結(jié)
編寫(xiě) spec
語(yǔ)法
Atom中的版本控制
查找和替換

通過(guò)服務(wù)和其它包交互

Atom包可以通過(guò)叫做服務(wù)的帶有版本控制的APi,和其它包進(jìn)行交互。在你的package.json文件中指定一個(gè)或者多個(gè)版本號(hào)來(lái)提供服務(wù),每個(gè)版本號(hào)都要帶有一個(gè)包的主模塊中的方法。

{
  "providedServices": {
    "my-service": {
      "description": "Does a useful thing",
      "versions": {
        "1.2.3": "provideMyServiceV1",
        "2.3.4": "provideMyServiceV2",
      }
    }
  }
}

在你的包的主模塊中實(shí)現(xiàn)上面的方法。這些方法會(huì)在一個(gè)包被激活的任何時(shí)候調(diào)用,它們會(huì)使用它們的通信服務(wù)。它們應(yīng)該返回實(shí)現(xiàn)了服務(wù)API的一個(gè)值。

module.exports =
  activate: -> # ...

  provideMyServiceV1: ->
    adaptToLegacyAPI(myService)

  provideMyServiceV2: ->
    myService

與之相似,指定一個(gè)或多個(gè)版本范圍來(lái)使用一個(gè)服務(wù),每個(gè)都帶有一個(gè)包的主模塊中的方法。

{
  "consumedServices": {
    "another-service": {
      "versions": {
        "^1.2.3": "consumeAnotherServiceV1",
        ">=2.3.4 <2.5": "consumeAnotherServiceV2",
      }
    }
  }
}

這些方法會(huì)在一個(gè)包被激活的任何時(shí)候調(diào)用,它們會(huì)提供它們的通信服務(wù)。它們會(huì)接受到一個(gè)通信對(duì)象作為一個(gè)參數(shù)。你通常需要在包提供的服務(wù)失效的時(shí)間中,進(jìn)行同種類型的清除工作。從你使用服務(wù)的方法中返回一個(gè)Disposable來(lái)完成它:

{Disposable} = require 'atom'

module.exports =
  activate: -> # ...

  consumeAnotherServiceV1: (service) ->
    useService(adaptServiceFromLegacyAPI(service))
    new Disposable -> stopUsingService(service)

  consumeAnotherServiceV2: (service) ->
    useService(service)
    new Disposable -> stopUsingService(service)
上一篇:配置API下一篇:小結(jié)