Gopeed 中文文档 下载 App

goja 运行环境:fetch、XMLHttpRequest 与存储 API

扩展脚本不是跑在浏览器或 Node 里——它运行在 goja(纯 Go 编写的 JavaScript 解释器)上。搞清运行时边界,才知道哪些库能用哪些不能用。

环境边界

网络请求:两个可用 API

运行时实现了 XMLHttpRequest 与 fetch 两个 API——基于它们或其封装的第三方库(axios、superagent 等)都能用。网络请求是扩展的核心能力:查询接口、解析页面、拿直链全靠它。

事件上下文怎么用

onResolve 触发时拿到上下文 ctx:从 ctx.req 读请求信息(资源地址、请求头),把解析出的文件列表写进 ctx.res:

gopeed.events.onResolve((ctx) => {
  ctx.res = {
    name: "example",
    files: [
      { name: "index.html", req: { url: "example.com/file" } }
    ],
  };
});

持久化:storage API

gopeed.storage 提供 get/set——存登录 token、用户偏好这类需要跨任务保留的数据:

let token = gopeed.storage.get("token");
if (!token) {
  token = await login();
  gopeed.storage.set("token", token);
}

日志排障

gopeed.logger 的 debug/info/warn/error 四级输出落到安装目录 logs 下的 extension.log,实时 tail 可查;debug 级别仅开发者模式安装的扩展生效,见脚手架创建扩展项目。

相关阅读