<div dir="ltr"><div><div><div><div><div><div>Why make things so complex and introduce so many syntax variations? The following should be sufficient:<br><br></div>import "underscore" as _; // var _ = require('underscore');<br>
<br></div></div></div><div>And there should be an API (not a language construct) to import a module dynamically (and asynchronously). Something like:<br><br></div><div>promise = importModule(path);<br></div><div><br></div>
Why introduce an export syntax? Why not just use this (or exports)?<br><br></div>this.foo = ... // or exports.foo = ...<br></div><div>this = .... // or exports = ..., similar to module.exports = ...<br>// importer obtains value of this / exports at end of module file,<br>
</div><div>// as if `return this` was added at the end of the file.<br></div><div><br></div><div class="gmail_quote">This would give the same power / flexibility as CommonJS and a simple compatibility path. This would eliminate the "default" exports problem because it would allow a module to export a function. It is also easy to explain.<br>
<br></div><div class="gmail_quote">There is an operational requirement to have a special syntax for import because this is what allows loaders to build a dependency graph and optimize dependency loading. But there is no "operational" requirement to have a special syntax for export. Static checking on exported members feels odd.<br>
<br></div><div class="gmail_quote">Bruno<br></div></div>