Module naming and declarations

Andreas Rossberg rossberg at google.com
Mon Apr 29 08:08:34 PDT 2013


On 29 April 2013 16:24, Domenic Denicola <domenic at domenicdenicola.com> wrote:
> While this is starting to make a lot of sense to me, especially the package-vs.-module concerns, I worry about trying to get it in ES6. Also, as someone with an ES5 background, I don't see the value of lexically-named modules, and so am happy to postpone them to ES7.
>
> Taken together, I think the minimal solution would be to remove explicit module declaration entirely: that is, ES6 would just have `import`/`export`, without any `module`.
>
> But this leaves the question of how to support the concatenative use case if we don't have the ability to declare multiple modules in the same file. This brings to mind two approaches:
>
> 1. Does SPDY alone solve the problem concatenation is meant to solve? I don't know very much about SPDY but it's reasonable to assume browsers that support ES6 modules will support SPDY, given current trends, and I know it makes some vague moves in this direction.
>
> 2. Can the loader API be used instead? E.g. instead of the concatenated file being
>
> ```js
> module "foo" { ... }
>
> module "bar" { ... }
> ```
>
> it could instead be
>
> ```js
> System.set("npm:foo", `...`);
> System.set("npm:bar", `...`);
> ```

I brought up this very suggestion as a "min-max" sort of compromise at
the March meeting, but it did not get much love. And I agree that it
isn't pretty, although it actually has some technical advantages, e.g.
enabling parallel parsing.

As for a SPDY-like mechanism, I absolutely believe that something
along these lines is the way to go, for two reasons:

1. My prediction is that in the mid-term future, concatenation will
actually become harmful to performance when the sources are already in
the browser cache, because it prevents a lot of parallelisation,
caching and/or work deferring that would otherwise be possible in the
VM.

2. The bundling and transmission issue is a problem far beyond JS
files, and needs to be solved on a more general level. Large web
applications like Gmail currently go to great length to optimize it
manually, across file types, and I believe that a purely JS modules
focused approach to bundling will not help them a iota, whatever we
do.

/Andreas


More information about the es-discuss mailing list