Loose idea on "try import"

Ben Wiley therealbenwiley at gmail.com
Fri Mar 1 20:35:43 UTC 2019


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).

Ben

Le ven. 1 mars 2019 15 h 26, Herby Vojčík <herby at mailbox.sk> a écrit :

> On 1. 3. 2019 18:35, Michał Wadas wrote:
> > I don't think so, because:
> >
> >   * Using promises to import module is not always desirable
> >   * This mechanism doesn't impact ability to statically analyze modules
> >     if ifs are excluded - it can only increase resolution time.
>
> Yeah, if 'if's are excluded. That version with those ifs was what was
> concerning. That actually needs runtime to do the work. I suppose until
> it doesn't need the runtime, it's all ok.
>
> >
> > On Fri, Mar 1, 2019 at 1:56 PM Herby Vojčík <herby at mailbox.sk
> > <mailto:herby at mailbox.sk>> wrote:
> >
> >     On 1. 3. 2019 12:04, Michał Wadas wrote:
> >      > Syntax:
> >      >
> >      > try import fs from 'fs'
> >      >     else import fs from 'fs-polyfill'
> >      >     else import fs from 'another-fs-polyfill'
> >      >     else do nothing; // Not sure about syntax
> >      >
> >      >
> >      > try import {watchDirectory} from 'fs'
> >      >     else import {watchDirectory} from 'fs-polyfill'
> >      >     else if(process.os === 'ExoticSystem') import
> >     {watchDirectory} from
> >      > 'another-fs-polyfill'
> >      >     else throw Error('Your OS doesn\'t support watching
> >     directories');
> >
> >     I am not an expert, but afaict ES module system was created to be
> >     statically analysable and this bring uncertainity.
> >
> >     For that probably dynamic import() is there; and your usage should
> >     await
> >     for a promise that tries to load one then the other etc.
> >
> >     Herby
> >
> >      > Usages:
> >      >
> >      >   * Optional dependencies
> >      >   * Polyfills
> >      >
> >      > Problems:
> >      >
> >      >   * This can prevent loading modules before execution if presence
> of
> >      >     modules can't be proved statically
> >      >   * else-if requires execution before loading module - can be
> dropped
> >      >
> >      >
> >      > I don't have enough time and knowledge about modules to write
> actual
> >      > proposal.
> >
>
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20190301/f9918263/attachment.html>


More information about the es-discuss mailing list