Big +1 on being able to defer execution until explicit import. It definitely seems useful to allow for control over dependency specifications separately from [potential] dependency execution. More concretely, I don't think you could do something like the following with the current module spec (correct if wrong):

exports.foo = function() {
  var bar = require('bar');
  bar.baz();
}

What about specifying some form of hoisting for ImportDeclarations so that dependencies for a module can be declared separately from their execution? This would still allow for compile-time resolution and linking while also addressing concerns about runtime-conditional dependencies...

-Jeff

On 6/3/13 9:33 AM, Yehuda Katz wrote:
On Mon, Jun 3, 2013 at 12:24 AM, Domenic Denicola <dome...@domenicdenicola.com <mailto:dome...@domenicdenicola.com>> wrote:

    From: sam...@gmail.com <mailto:sam...@gmail.com>
    [mailto:sam...@gmail.com <mailto:sam...@gmail.com>] On Behalf Of
    Sam Tobin-Hochstadt

    > The idea here is that modules will typically be written in files
    like "compiler/Lexer.js", where the starting grammar production
    *is* `ModuleBody`.

    Ah, that makes sense! It's a nice way of prohibiting
    `<script>export function foo() { }</script>` as well, assuming
    inline `<script>` corresponds to `Script`. It would be helpful to
    update the wiki with this, or more generally to show how this
    grammar will integrate with the rest of the grammar.

    > I would just write `import {} from "someModule";`

    That appears to be disallowed; I believe

        "{" ImportSpecifier ("," ImportSpecifier)* ","? "}"

    requires at least one `ImportSpecifier`. (It's also sad and ugly;
    any reason not to allow `import "someModule";`?)


I've advocated for this in the past. I believe it should be allowed.

Separately, I would like this form to be specified as deferring execution until bindings are explicitly imported (from another module), or a synchronous `System.get` call is made.

This would make it possible to guarantee that a synchronous `System.get` will succeed, without being forced to execute the module first.

    _______________________________________________
    es-discuss mailing list
    es-discuss@mozilla.org <mailto:es-discuss@mozilla.org>
    https://mail.mozilla.org/listinfo/es-discuss




_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to