Slide 1

Slide 1 text

CommonJS module loader

Slide 2

Slide 2 text

Yet another way to load modules

Slide 3

Slide 3 text

But this time standard modules!

Slide 4

Slide 4 text

More than 9K of modules were written

Slide 5

Slide 5 text

let { doStuff } = require('other/libs') exports.stuff = function(options) { // do some stuff... } You can require other libs and export your stuff Each module is loaded in it’s own sandbox You can expose stuff by putting it into exports

Slide 6

Slide 6 text

let { Loader, Require, unload } = Cu.import('resource:///modules/sdk/loader.js') You can import loader as JSM

Slide 7

Slide 7 text

As a regular script

Slide 8

Slide 8 text

let { Loader, Require, unload } = require('loader') Or load loader with a loader itself

Slide 9

Slide 9 text

let loader = Loader({ // provide path for modules baseURI: 'resource:///modules/', // provide module global bindings globals: { console: { log: dump } }, // provide set of built-in modules modules: { 'dev-tools/gcli': Cu.import('resource:///modules/gcli.jsm'), 'net/utils': Cu.import('resource:///modules/NetUtil.jsm'), } }) Creating a loader is pretty simple

Slide 10

Slide 10 text

let require = Require(loader, module) require('some-stuff') With a loader you can create require, to require stuff

Slide 11

Slide 11 text

require('browser/places') require('toolkit/auto-complete') require('devtools/scratchpad') exports.Thank = You And hopefully soon enough you’ll be able to require any browser component