> I see two coherent alternatives:
>
> (a) execute inline modules by need (i.e., on first import) rather than
> eagerly
> (b) execute external modules "transactionally", trying to order them by
> dependency so that imported modules have fully initialized before the code
> that depends on them runs
>

I think we should also consider :

(c) remove easy and transparent concatability from the list of design goals.

Why do we want to concat modules?  I can think of two reasons:

1.  To reduce the number of HTTP requests.
2.  To distribute a program as a single file.

Now, transpilers targeting ES<6 will have to wrap each "separate file"
module in a factory function anyway, so order-of-execution is no problem
for them.  Ergo, the current module design presents no concat problems for
ES<6 targets.

What about ES6 targets?  Do we really need to concat for ES6 targets?

Concating source files has always been a suboptimal solution to the
multiple request problem anyway.  It's not as cringe-inducing as image
sprites, but it's up there.  As David Bruant mentioned, a design goal for
HTTP 2 is to make such spriting unnecessary.  Will HTTP 2 permeate before
ES6..?

The obvious solution to (2) from above is to distribute programs as zip
files.  A crazy idea:  what if browsers natively supported loading modules
from zip files?

Kevin
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to