<div dir="auto">Has anyone seen anything like this done in another language (with static imports)? If so we could learn something maybe. I know you can conditionally import in Python but that's basically the same thing as .catch()ing dynamic import()s in JavaScript (except done synchronously).<div dir="auto"><br></div><div dir="auto">Ben</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Le ven. 1 mars 2019 15 h 26, Herby Vojčík <<a href="mailto:herby@mailbox.sk">herby@mailbox.sk</a>> a écrit :<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On 1. 3. 2019 18:35, Michał Wadas wrote:<br>
> I don't think so, because:<br>
> <br>
>   * Using promises to import module is not always desirable<br>
>   * This mechanism doesn't impact ability to statically analyze modules<br>
>     if ifs are excluded - it can only increase resolution time.<br>
<br>
Yeah, if 'if's are excluded. That version with those ifs was what was <br>
concerning. That actually needs runtime to do the work. I suppose until <br>
it doesn't need the runtime, it's all ok.<br>
<br>
> <br>
> On Fri, Mar 1, 2019 at 1:56 PM Herby Vojčík <<a href="mailto:herby@mailbox.sk" target="_blank" rel="noreferrer">herby@mailbox.sk</a> <br>
> <mailto:<a href="mailto:herby@mailbox.sk" target="_blank" rel="noreferrer">herby@mailbox.sk</a>>> wrote:<br>
> <br>
>     On 1. 3. 2019 12:04, Michał Wadas wrote:<br>
>      > Syntax:<br>
>      ><br>
>      > try import fs from 'fs'<br>
>      >     else import fs from 'fs-polyfill'<br>
>      >     else import fs from 'another-fs-polyfill'<br>
>      >     else do nothing; // Not sure about syntax<br>
>      ><br>
>      ><br>
>      > try import {watchDirectory} from 'fs'<br>
>      >     else import {watchDirectory} from 'fs-polyfill'<br>
>      >     else if(process.os === 'ExoticSystem') import<br>
>     {watchDirectory} from<br>
>      > 'another-fs-polyfill'<br>
>      >     else throw Error('Your OS doesn\'t support watching<br>
>     directories');<br>
> <br>
>     I am not an expert, but afaict ES module system was created to be<br>
>     statically analysable and this bring uncertainity.<br>
> <br>
>     For that probably dynamic import() is there; and your usage should<br>
>     await<br>
>     for a promise that tries to load one then the other etc.<br>
> <br>
>     Herby<br>
> <br>
>      > Usages:<br>
>      ><br>
>      >   * Optional dependencies<br>
>      >   * Polyfills<br>
>      ><br>
>      > Problems:<br>
>      ><br>
>      >   * This can prevent loading modules before execution if presence of<br>
>      >     modules can't be proved statically<br>
>      >   * else-if requires execution before loading module - can be dropped<br>
>      ><br>
>      ><br>
>      > I don't have enough time and knowledge about modules to write actual<br>
>      > proposal.<br>
> <br>
<br>
_______________________________________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org" target="_blank" rel="noreferrer">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" rel="noreferrer noreferrer" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br>
</blockquote></div>