Skip to content

插件的基本结构

MicroBlock edited this page Mar 17, 2023 · 2 revisions

插件的基本结构

一般,一个插件需要至少两个文件:manifest.json 和一个 .js 文件。

插件 Manifest (C)

插件 manifest 是插件的元数据,用于描述插件的基本信息、依赖、注入、请求修改等。BetterNCM 插件必须包含一个 manifest 文件。

属性

  • manifest_version (必需): 插件 manifest 版本,必需为 1。
  • name (必需): 插件名。
  • slug (可选): 插件唯一标识符 (英文、数字、横杠与下划线)。如果留空,则根据 name 自动生成。
  • version (必需): 插件版本号,推荐使用语义化版本 ( https://semver.org/ )。
  • betterncm_version (必需): 插件依赖的 BetterNCM 版本。
  • author (必需): 插件作者。
  • author_link (可选): 插件作者链接。
  • description (必需): 插件描述。
  • preview (可选): 插件预览图。
  • type (可选): 插件类型。可选值为 extension (默认)、themedependency
  • requirements (可选): 插件依赖的其他插件的 slug。
  • injects (可选): 描述插件注入的内容。
  • hijacks (可选): 描述插件请求修改的内容。
  • native_plugin (可选): 需要注入的 native dll。

使用例

{
    "manifest_version": 1,
    "name": "ExamplePlugin",
    "slug": "example-plugin",
    "version": "0.1.0",
    "betterncm_version": ">=1.0.0",
    "author": "Author",
    "author_link": "https://example.com",
    "description": "Description of the plugin",
    "preview": "preview.png",
    "type": "extension",
    "requirements": ["example-dependency"],
    "injects": {
        "Main": [
            {
                "file": "main.js"
            }
        ]
    },
}

.js 文件

你应该将此文件的相对路径填入 Manifest 的 injects 中,以便于 BetterNCM 自动注入该文件。

在此文件内,你可以使用所有在 Chrome 91 浏览器中可以使用的 API。额外地,你还可以使用这些 API。

插件生命周期 API

plugin.onLoad (C)

当 BetterNCM 加载该插件时,会执行 plugin.onLoad 代码块中的函数。你可以在这个函数中做一些初始化的操作。例如,导出一个函数:

plugin.onLoad(function () {
  // do plugin stuff
  this.mainPlugin.add=(a,b)=>a+b //导出一个名为 add 的函数
});

plugin.onConfig (C)

当用户点击插件面板上的设置按钮时,应该调用 plugin.onConfig 函数。该函数应该返回一个 DOM 元素,用于该插件的设置页面。

plugin.onConfig(tools => {
    return document.createElement("div");
});

plugin.onAllPluginsLoaded (C)

当 BetterNCM 加载全部插件后,会执行 plugin.onAllPluginsLoaded 代码块中的函数。你可以在这个函数中访问其他插件导出的函数,例如:

plugin.onAllPluginsLoaded(()=>{
 // 访问其他插件导出的函数
loadedPlugins.ExamplePlugin.someApi();
})

请注意,访问其他插件导出的函数需要在所有插件加载完成后进行。