So, it seems to me that we're talking about two aspects of module loading:

1) Singleton vs. per-instance

Cu.import allows us to share a single object between all the code that 
references it.

ES6 modules are not meant to do that.

2) Conditional vs. static

Cu.import allows us to decide *when* we're loading the code for side-effects, 
or even *if* we're going to load it at all.

if (needed) {
  Cu.import(...);
}

or

XPCOMUtils.defineLazyModuleGetter(this, 'Services',
  'resource://gre/modules/Services.jsm');

-----------------

The latter one may be resolved by some future ECMA proposals like:
 - https://github.com/domenic/proposal-import-function
 - https://github.com/benjamn/reify/blob/master/PROPOSAL.md

The former is a more tricky. I'm not sure how can we, within statement import 
world annotate the difference.
In the import-function world we could maybe do:

import('resource://gre/modules/Services.jsm', {singleton: true}).then();

but for static I don't see a semantically compatible way to annotate singleton 
reference.

zb.
_______________________________________________
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform

Reply via email to