dynamic synchronous import

Guy Bedford guybedford at gmail.com
Sun Sep 28 08:45:24 PDT 2014


On 28 September 2014 07:01, John Lenz <concavelenz at gmail.com> wrote:

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

I'm not sure what rendering behaviour is planned for <script
type="module">, but I hope there would be a way to indicate when it should
and shouldn't block rendering of the HTML page / HTML import.

In terms of preloading, there are complete ways to do this through custom
extensions.


>
> 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
>>
>>
>
> _______________________________________________
> 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/20140928/073ae990/attachment-0001.html>


More information about the es-discuss mailing list