aboutsummaryrefslogtreecommitdiffstats
path: root/resources/src/modules.md
blob: 67e0991ab402e2e9940147443a0033e2bb92dc84 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# Modules

Modules in MediaWiki are based on [JavaScript modules](https://developer.mozilla.org/docs/Web/JavaScript/Guide/Modules) and are provided by
[ResourceLoader](https://www.mediawiki.org/wiki/Special:MyLanguage/ResourceLoader/Developing_with_ResourceLoader).
Modules are the preferred way to interact with the MediaWiki frontend API.

This section documents [stable](https://www.mediawiki.org/wiki/Special:MyLanguage/Stable_interface_policy/Frontend) modules included with MediaWiki core.
For information about modules defined by extensions, see the documentation for those extensions.

To use a module, load the module asynchronously with `mw.loader`:

```js
mw.loader.using( 'moduleName' ).then( ( require ) => {
  const module = require( 'moduleName' );
  module.func();
} );();
```

Or, you can list the module in your extension's [ResourceLoader module](https://www.mediawiki.org/wiki/Special:MyLanguage/ResourceLoader/Developing_with_ResourceLoader#Registering) as a dependency. For example, to use `mediawiki.util`:

`extension.json`
```json
"ResourceModules": {
    "ext.MyExtension": {
        "localBasePath": "modules/ext.MyExtension",
        "remoteExtPath": "MyExtension/modules/ext.MyExtension",
        "packageFiles": [
            "index.js"
        ],
        "dependencies": [
            "mediawiki.util"
        ]
    }
}
```

`index.js`
```js
const module = require( 'mediawiki.util' );
module.clearSubtitle();
```

## jQuery plugins

MediaWiki uses the jQuery library. You can access and extend the jQuery object using plugins
included with MediaWiki core by loading certain ResourceLoader modules.