mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-03-02 14:30:43 +00:00
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:
parent
9cae470077
commit
8d8867892d
@ -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.
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user