如何注册一个 Actor

目标作用域 Actor 与全局 Actor

目标作用域 Actor 是最常见的 Actor 类型。这很可能是您将要添加的 Actor 类型。

目标作用域 Actor 以某个文档为目标,这可以是 Firefox 中的一个标签页,也可以是 Android 版 Firefox 中的远程文档。

然而,全局 Actor 用于其他情况,即与任何特定文档无关的情况,而是与工具箱连接到的整个 Firefox/Chrome/Safari 实例相关的全局事物(例如,偏好设置 Actor)。

ActorRegistry.registerModule 函数

注册目标作用域 Actor

ActorRegistry.registerModule("devtools/server/actors/webconsole", {
  prefix: "console",
  constructor: "WebConsoleActor",
  type: { target: true }
});

注册全局 Actor

ActorRegistry.registerModule("devtools/server/actors/preference", {
  prefix: "preference",
  constructor: "PreferenceActor",
  type: { global: true }
});

如果您正在添加一个新的内置 Actor,则应使用 ActorRegistry.registerModuleaddBrowserActorsaddTargetScopedActors 中注册它,位于 /devtools/server/actors/utils/actor-registry.js

关于延迟注册的说明

ActorRegistry 延迟加载并创建所有 Actor,以降低初始内存使用量(这在低端设备上极其重要)。

在使用 e10s 调试页面时,当存在多个进程时,这一点变得尤其重要,因为这时我们需要为每个进程生成一个 DevToolsServer(可能并不立即清楚主进程中的服务器主要用于将消息传递给子进程中的 Actor)。