dynamic synchronous import

John Lenz concavelenz at gmail.com
Sat Sep 27 22:01:03 PDT 2014


I would like to see some way to preload everything, and be able to retrieve
them synchronously, something like:

  System.loader.addNoAsync('...');  // throw if all imports aren't
available already

So that the script could be used during initial render. I understand that
this would mean that the module would need to be parsed and executed
synchronously. Forcing folks to never use any module for code that needs to
be inline seems like a bad turn.

On Fri, Sep 26, 2014 at 1:44 PM, John Barton <johnjbarton at google.com> wrote:

> Theoretically you can use System.normalize() and System.get() to lookup a
> module by name synchronously. The normalize feature requires a referrer or
> address.
>
> Since browsers are determined to eliminate synchronous scripts, you may as
> well deal with the asynchronous System.import() and obnoxious promises
> stuff now and save yourself some pain later.
>
> jjb
>
> On Fri, Sep 26, 2014 at 9:40 AM, Konstantin Ikonnikov <ikokostya at gmail.com
> > wrote:
>
>> I don't want load module using http request. In my case module already
>> defined and I want import it later when I get its name:
>>
>> ```js
>> var moduleName = getModuleName();
>> import { foo } from moduleName;
>>
>> // use foo
>> ```
>>
>>
>>
>> 2014-09-26 20:00 GMT+04:00 Marius Gundersen <gundersen at gmail.com>:
>>
>>> And the reason you cannot import a module synchronously is that it would
>>> freeze the entire browser until the http request completes, which could be
>>> several seconds on a slow internet connection.
>>>
>>> If you want to import something dynamically you can do it using the API
>>> (to be finalized, I believe):
>>>
>>> ```js
>>> var moduleName = 'foo';
>>> Loader.import(moduleName).then(function(foo){
>>>   //use foo here
>>> });
>>> ```
>>>
>>> Marius Gundersen
>>>
>>> On Fri, Sep 26, 2014 at 5:29 PM, John Barton <johnjbarton at google.com>
>>> wrote:
>>>
>>>> no.
>>>>
>>>> On Fri, Sep 26, 2014 at 8:12 AM, Konstantin Ikonnikov <
>>>> ikokostya at gmail.com> wrote:
>>>>
>>>>> Can I import module dynamically, but synchronously? Example for
>>>>> common js
>>>>>
>>>>> ```js
>>>>> var moduleName = 'foo';
>>>>> var foo = require(moduleName);
>>>>> ```
>>>>>
>>>>> In es6 draft I found that ModuleSpecifier must be a StringLiteral
>>>>> http://people.mozilla.org/~jorendorff/es6-draft.html#sec-imports
>>>>>
>>>>> _______________________________________________
>>>>> es-discuss mailing list
>>>>> es-discuss at mozilla.org
>>>>> https://mail.mozilla.org/listinfo/es-discuss
>>>>>
>>>>>
>>>>
>>>> _______________________________________________
>>>> es-discuss mailing list
>>>> es-discuss at mozilla.org
>>>> https://mail.mozilla.org/listinfo/es-discuss
>>>>
>>>>
>>>
>>
>> _______________________________________________
>> es-discuss mailing list
>> es-discuss at mozilla.org
>> https://mail.mozilla.org/listinfo/es-discuss
>>
>>
>
> _______________________________________________
> 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/20140927/6dce4e63/attachment.html>


More information about the es-discuss mailing list