<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div>I apologize for this email, but I still donít understand the current module design.</div><div><br></div><div>**Multi-export modules.** Modules made sense to me as long as they were maps from names to exported values:</div><div><br></div><div>```js</div><div>// Module 'library'</div><div>export function foo() {</div><div>}</div><div>export function bar() {</div><div>}</div><div><br></div><div>// Module 'client1'</div><div>import { foo, bar } from 'library';</div><div>foo();</div><div>bar();</div><div><br></div><div>// Module 'client2'</div><div>import lib from 'library';</div><div>lib.foo();</div><div>lib.bar();</div><div>```</div><div><br></div><div>Compared to CommonJS, the syntax is nicer and less redundant. Additionally, the curly braces for getting stuff out of a module work, because they look like destructuring. And you get load-time errors if imports donít match exports.</div><div><br></div><div><br></div><div>**Single-export modules.** Still missing is support for single-export modules, which could be added as follows (the keyword `default` instead of the asterisk works just as well, in my opinion).</div><div><br></div><div>```js</div><div>// Module 'MyClass'</div><div>export* class {</div><div>};</div><div><br></div><div>// Module 'client3'</div><div>import* MyClass from 'MyClass';</div><div>```</div><div><br></div><div>At the moment, it seems to me like multi-export modules and single-export modules are mixed in a way that makes things difficult to understand.</div><div><br></div><div>Axel</div><br><div apple-content-edited="true">
<div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">-- <br>Dr. Axel Rauschmayer<br><a href="mailto:axel@rauschma.de">axel@rauschma.de</a><br>rauschma.de<br></div><br></div></div><br class="Apple-interchange-newline">
</div>
<br></body></html>