<html><head><meta http-equiv="Content-Type" content="text/html; charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div class=""><blockquote type="cite" class="">Asynchronous loading differs only in<br class="">that it takes more code to express the same logic and you have to take<br class="">into account concurrent requests (and you need to cache the request,<br class="">not the result), but it's otherwise the same from 1km away.<br class=""></blockquote><br class=""></div>so async-loading 50 <font face="Courier" class="">```<script type="module">```</font> tags<div class="">has equivalent side-effect</div><div class="">as sync-loading single webpack-rollup (of same 50 modules)?</div><div class=""><div class=""><div class=""><br class=""></div><div class="">i have nagging suspicion of doubts.  has anyone tried native async-loading large numbers (>10) of</div><div class=""><font face="Courier" class="">```<script type="module">```</font> tags, and verify it resolves identically to using a single webpack-rollup?</div><div class=""></div><div class=""><div><br class=""></div><div>again, i'm not that knowledgeable on es-modules, so above question may be trivially true, and i'm just not aware.</div><div><br class=""></div><div>-kai</div><div><br class=""><blockquote type="cite" class=""><div class="">On 24 May 2019, at 23:41, Isiah Meadows <<a href="mailto:isiahmeadows@gmail.com" class="">isiahmeadows@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="">There's two main reasons why it scales:<br class=""><br class="">1. Modules are strongly encapsulated while minimizing global pollution.<br class="">2. The resolution algorithm applies the same logic no matter how many<br class="">modules are loaded.<br class=""><br class="">It's much easier for it to scale when you write the code unaware of<br class="">how many modules you might be loading and unaware of how deep their<br class="">dependency graph is. Fewer assumptions here is key. It's an<br class="">engineering problem, but a relatively simple one.<br class=""><br class="">If you want a short example of how sync module resolution works, you<br class="">can take a look at this little utility I wrote:<br class=""><a href="https://github.com/isiahmeadows/simple-require-loader" class="">https://github.com/isiahmeadows/simple-require-loader</a>. That doesn't<br class="">asynchronously resolve modules, but it should help explain the process<br class="">from a synchronous standpoint. Asynchronous loading differs only in<br class="">that it takes more code to express the same logic and you have to take<br class="">into account concurrent requests (and you need to cache the request,<br class="">not the result), but it's otherwise the same from 1km away.<br class=""><br class="">-----<br class=""><br class="">Isiah Meadows<br class=""><a href="mailto:contact@isiahmeadows.com" class="">contact@isiahmeadows.com</a><br class="">www.isiahmeadows.com<br class=""><br class="">On Thu, May 23, 2019 at 10:49 AM kai zhu <kaizhu256@gmail.com> wrote:<br class=""><blockquote type="cite" class=""><br class="">actually, i admit i don't know what i'm talking about.  just generally confused (through ignorance) on how large-scale es-module dependencies resolve when loaded/imported asynchronously.<br class=""><br class="">On Wed, May 22, 2019 at 10:42 PM Logan Smyth <loganfsmyth@gmail.com> wrote:<br class=""><blockquote type="cite" class=""><br class="">Can you elaborate on what loading state you need to keep track of? What is the bottleneck that you run into? Also to be sure, when you say async-load, do you mean `import()`?<br class=""><br class="">On Wed, May 22, 2019, 20:17 kai zhu <kaizhu256@gmail.com> wrote:<br class=""><blockquote type="cite" class=""><br class="">i don't use es-modules.<br class="">but with amd/requirejs, I start having trouble with module-initializations in nodejs/browser at ~5 async modules (that may or may not have circular-references).  10 would be hard, and 20 would be near inhuman for me.<br class=""><br class="">can we say its somewhat impractical for most applications to load more than 50 async modules (with some of them having circular-references)?  and perhaps better design/spec module-loading mechanisms with this usability concern in mind?<br class=""><br class="">p.s. its also impractical for me to async-load 5 or more modules without using globalThis to keep track of each module's loading-state.<br class="">_______________________________________________<br class="">es-discuss mailing list<br class="">es-discuss@mozilla.org<br class="">https://mail.mozilla.org/listinfo/es-discuss<br class=""></blockquote></blockquote><br class="">_______________________________________________<br class="">es-discuss mailing list<br class="">es-discuss@mozilla.org<br class="">https://mail.mozilla.org/listinfo/es-discuss<br class=""></blockquote></div></div></blockquote></div><br class=""></div></div></div></body></html>