Shared modules(共享模块)

警告

您正在查看的页面描述了使用 Manifest V2 的扩展。现在Manifest V3 已经发布,我们强烈建议您将它用于您创建的任何新扩展。

共享模块是无需许可的资源集合,可以在其他扩展程序和应用程序之间共享。共享模块的常见用途是:

  • 作为 API。您可以分发一个可以提供 HTML、JS 和其他源代码的共享模块,以提供一个 API,该 API 可以独立于依赖它的扩展进行更新。这对于运行时和游戏引擎很有用,其中应用程序通常是在共享模块代码上运行的较小数据负载。
  • 作为下载优化。共享模块包含许多扩展使用的公共资源。它下载一次,第一次安装依赖扩展。

# 显现

共享模块通过两个清单字段使用:导出和导入。

出口字段指示扩展是一个共享的模块,它出口的资源:

{
  "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
}

进口字段用于通过扩展程序和应用来声明它们依赖于从特定共享的模块的资源:

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

# 访问资源

共享模块资源由导入扩展根目录中的保留路径_modules/<shared_module_id>访问。例如,要从 ID 为“cccccccccccccccccccccccccccccc”的共享模块中包含脚本“foo.js”,请使用扩展根目录中的以下路径:

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

如果导入扩展的 ID 为“aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa”,则共享模块中资源的完整 URL 为:

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

请注意,由于来自共享模块的资源覆盖在导入扩展的源中,因此授予导入扩展的所有权限都可用于共享模块中的代码。此外,共享模块能够使用绝对路径访问导入扩展中的资源。

# 安装/卸载

共享模块会在依赖扩展程序需要时从 Chrome 网上应用店自动安装,并在卸载引用它的最后一个扩展程序时自动卸载。要上传使用共享模块的扩展程序,共享模块必须在 Chrome 网上应用店中发布,并且扩展程序不得被其许可名单限制使用共享模块。

在开发过程中,您需要手动安装您的扩展使用的任何共享模块。对于旁加载或作为解压缩扩展加载的扩展,不会发生自动安装。对于本地安装、解压的共享模块,您必须使用密钥字段来确保共享模块使用正确的 ID。

By.一粒技术服务.

results matching ""

    No results matching ""