Bug 1934056 - Update devtools document to use ESM-based API. r=devtools-reviewers,ochameau

Differential Revision: https://phabricator.services.mozilla.com/D230571
This commit is contained in:
Tooru Fujisawa 2024-12-02 21:17:45 +00:00
parent 9cae470077
commit 8d8867892d
2 changed files with 8 additions and 7 deletions

View File

@ -33,7 +33,7 @@ For quick reference, here are some of the main code style rules:
* getters / setters require { },
* only import specific, explicitly-declared symbols into your namespace:
* `const { foo, bar } = require("foo/bar");`,
* `const { foo, bar } = ChromeUtils.import("...");`,
* `const { foo, bar } = ChromeUtils.importESModule("...");`,
* use Maps, Sets, WeakMaps when possible,
* use [template strings](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals) whenever possible to avoid concatenation, allow multi-line strings, and interpolation.

View File

@ -36,11 +36,12 @@ Example:
* `loader.lazyRequireGetter(this, "layout", "devtools/server/actors/layout")`
* `require("devtools/server/actors/layout")`
### `ChromeUtils.import()`
### `ChromeUtils.importESModule()`
Some older DevTools JS modules use the Gecko JavaScript code module format with the file extension `.jsm`. We are trying to move away from this format, so it's unlikely you would add a new one, but you might need to import an existing one in your code.
Some DevTools modules use a variant of the standard ECMAScript module, with
the file extension `.sys.mjs`.
These modules are loaded using `ChromeUtils.import()`. To `import()` a file, you provide a `resource://` URL, which is exactly the source tree path.
These modules are loaded using `ChromeUtils.importESModule()`. To `importESModule()` a file, you provide a `resource://` URL, which is exactly the source tree path.
In more detail:
@ -56,10 +57,10 @@ Example:
Example:
* File: `/toolkit/mozapps/extensions/AddonManager.jsm`
* File: `/toolkit/mozapps/extensions/AddonManager.sys.mjs`
* Usage (prefer lazy in most cases):
* `const lazy = {}; ChromeUtils.defineModuleGetter(lazy, "AddonManager", "resource://gre/modules/AddonManager.jsm")`
* `const { AddonManager } = ChromeUtils.import("resource://gre/modules/AddonManager.jsm")`
* `const lazy = {}; ChromeUtils.defineESModuleGetter(lazy, "AddonManager", "resource://gre/modules/AddonManager.sys.mjs")`
* `const { AddonManager } = ChromeUtils.importESModule("resource://gre/modules/AddonManager.sys.mjs")`
## Chrome Content