共用模組

共用模組是無權限的資源集合,可在擴充功能之間共用。共用模組的常見用途包括:

  • 做為 API。您可以發布可提供 HTML、JS 和其他資源的共用模組來提供 API,這個模組可獨立更新,而不受擴充功能依附的擴充功能影響。
  • 最佳化下載。共用模組包含許多擴充功能使用的通用資源。系統會在首次安裝依附擴充功能時下載一次。

資訊清單

共用模組會透過兩個資訊清單欄位使用:"export""import"

匯出

「export」欄位表示擴充功能是匯出其資源的共用模組:

{
  "version": "1.0",
  "name": "My Shared Module",
  "export": {
    // Optional list of extension IDs explicitly allowed to
    // import this Shared Module's resources.  If no allowlist
    // is given, all extensions are allowed to import it.
    "allowlist": [
      "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
      "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
    ]
  }
  // Note: no permissions are allowed in Shared Modules
}

匯入

擴充功能和應用程式會使用 import 欄位,宣告其依附於特定共用模組的資源:

{
  "version": "1.0",
  "name": "My Importing Extension",
  ...
  "import": [
    {"id": "cccccccccccccccccccccccccccccccc"},
    {"id": "dddddddddddddddddddddddddddddddd"
     "minimum_version": "0.5" // optional
    },
  ]
}

存取資源

共用模組資源可透過匯入擴充功能根層級中的保留路徑 _modules/SHARED_MODULE_ID 存取。例如,如要從 ID 為「cccccccccccccccccccc」」的共用模組中 加入指令碼 foo.js,請使用擴充功能根層級的路徑:

<script src="_modules/cccccccccccccccccccccccccccccccc/foo.js">

如果匯入擴充功能的 ID 為「aaaaaaaaaaaaaaaaaaaaaaaaaa」,則共用模組中資源的完整網址為:

chrome-extension://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/_modules/cccccccccccccccccccccccccccccccc/

請注意,由於共用模組中的資源會覆蓋在匯入擴充功能的來源中,因此所有授予匯入擴充功能的權限,都可在共用模組中的程式碼使用。此外,共用模組可以使用絕對路徑存取匯入擴充功能中的資源。

安裝 / 解除安裝

如果依附擴充功能需要安裝共用模組,系統會自動從 Chrome 線上應用程式商店安裝共用模組;如果依附的擴充功能解除安裝,這個模組也會自動解除安裝。 如要上傳使用共用模組的擴充功能,共用模組必須在 Chrome 線上應用程式商店中發布,且擴充功能不得透過許可清單使用共用模組。

在開發過程中,您必須手動安裝擴充功能使用的所有共用模組。側載或以未封裝的擴充功能載入的擴充功能不會自動安裝。如果是在本機安裝且未封裝的共用模組,您必須使用 key 欄位,確保共用模組使用正確的 ID。