On Mon, Sep 9, 2013 at 3:33 AM, Dmitry Soshnikov
<[email protected]> wrote:

> 2. As I understand, this `module "foo" { ... }` way of defining is either for 
> inner modules (inside a parent external modules), or inside an external file 
> which is not a module, but a script (and therefore, cannot be loaded as 
> module).
>
> The first case isn't that useful -- I defined an inner module inside a parent 
> external module, and then what? -- import it exactly in the same file? What 
> is that mean? Naming collisions happen not that often inside a module (this 
> is why it's a module), that sub-devide it on sub-modules.
>
> Or can I probably export this inner submodule from the parent? How this 
> double import will look like, if it's even possible? First import the inner 
> module form the parent, then bindings from the inner?

There are no nested modules.

> If the parent file is not actually a module, but a script -- how this script 
> is loaded? On the web using <script>? On Node.js? -- using ..."require"? Two 
> module systems?

Bundled collections of modules are loaded primarily by loading them or
referencing them using a module loader, and then importing from the
individual modules they define.

> 3. For external modules, will it be possible to omit filename extension? 
> `import foo from "foo.js"` -- sounds obsolete, unless we'll be able to import 
> modules written on different languages.

In the browser (this is not intended to be part of the language
semantics), the default rule for going from a module name like "foo"
to a URL like "http://example.com/foo.js"; will add ".js".

> 4. What is export from module?
>
> import {foo} from "foo.js";
> export {foo} from "foo.js"
>
> First makes sense to me (well, syntax is debatable, but anyways), the second 
> I don't understand. Can I, as a caller, re-export (i.e. make public) 
> something from not my module, and that was specially not exported?

No, you can't.  The latter means the same as:

    import { foo } from "foo";
    export { foo };

except without adding `foo` to the local scope.  It doesn't expose
anything unexported.

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

Reply via email to