<div dir="ltr">"esparse" used to have a module which exported a huge list of things, and for the same reason I believe.<div><br></div><div>Basically there's an "AST" module which exports a huge list of AST node-type classes.  That module is then exported to the public interface.</div>
<div><br></div><div><a href="https://github.com/zenparsing/esparse/blob/53566066a9d1780bb27f73d208160595e2e0bb47/src/AST.js">https://github.com/zenparsing/esparse/blob/53566066a9d1780bb27f73d208160595e2e0bb47/src/AST.js</a><br>
</div><div><br></div><div>I moved away from this approach only for performance reasons (basically to avoid inheritance) because I'm optimizing hot, transpiled ES6 -to-ES5 code.  Were it not for the (somewhat ugly) performance optimization, I would have left the multi-export design.</div>
<div><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Jun 9, 2014 at 11:41 AM, Erik Arvidsson <span dir="ltr"><<a href="mailto:erik.arvidsson@gmail.com" target="_blank">erik.arvidsson@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Traceur definitely has a lot of exports in a single module.<br><br><a href="https://github.com/google/traceur-compiler/blob/master/src/syntax/Parser.js#L15" target="_blank">https://github.com/google/traceur-compiler/blob/master/src/syntax/Parser.js#L15</a><br>

<div><br></div><div>We do not however, use the `module` form since we want to get rid of the extra Get (which deopts switch statements in some engines).</div><div class="HOEnZb"><div class="h5"><br><div>On Mon Jun 09 2014 at 11:36:58 AM, Caridy Patino <<a href="mailto:caridy@gmail.com" target="_blank">caridy@gmail.com</a>> wrote:</div>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">My perspective here is that there are not too many modules (in nodejs) that rely on more than a handful of exports from a particular module, we are actively working on validating this using esprima in a large set of npm modules. If this is true, we should be just fine with specific imports, and for the edge cases, an imperative form should be sufficient.<div>


<br></div><div>For now, I will ask you all to try to find a modules that are using too many exported methods from one of its imported modules, you will be suprise how hard it is too find those. </div></div><div dir="ltr">

<div><br><div><br></div><div>/caridy  </div>
</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Jun 9, 2014 at 11:27 AM, Axel Rauschmayer <span dir="ltr"><<a href="mailto:axel@rauschma.de" target="_blank">axel@rauschma.de</a>></span> wrote:<br>


<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div><div><blockquote type="cite"><div dir="ltr"><div>As an aside, it is yet to be seen whether the "default" export thing is the best way, or the bad part itself.  We don't have the real world experience yet to answer that.</div>



</div></blockquote><br></div></div><div>I’d even argue that they led to the predicament that we are currently in.</div><div><br></div><div>If the default export didn’t look like “the module”, things would, in my opinion, be easier to understand:</div>


<div><br></div><div>```js</div><div>import _ from "Underscore";</div><div>import { flatten, union } from "Underscore";</div><div>import default someFunction from "single_function_module";</div>


<div><div>```</div><div><br></div><div>
<div style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;word-wrap:break-word"><div style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;word-wrap:break-word">


<div style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;word-wrap:break-word">-- <br>Dr. Axel Rauschmayer<br><a href="mailto:axel@rauschma.de" target="_blank">axel@rauschma.de</a><br>


<a href="http://rauschma.de" target="_blank">rauschma.de</a><br></div><br></div></div><br>
</div>
<br></div></div><br>_______________________________________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br>
<br></blockquote></div><br></div>
______________________________<u></u>_________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" target="_blank">https://mail.mozilla.org/<u></u>listinfo/es-discuss</a><br>
</blockquote>
</div></div><br>_______________________________________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br>
<br></blockquote></div><br></div>