I don't think we have to inject these scripts into the main .js file.  The 
compiler knows when it is compiling the main app or a module.  When compiling 
the main app, it should inject the script in the HEAD of the html wrapper.  For 
modules, it can inject the script into a separate file.  The ModuleLoader 
already loads extra files before loading the module.  It can load one more file.

Of course, I could be wrong...
-Alex

On 5/18/20, 7:38 AM, "Yishay Weiss" <yishayj...@hotmail.com> wrote:

    From what I’ve read [1] scripts injected dynamically will always load after 
static script elements. So I don’t think there’s a good way to ensure the 
proper order in run-time unless we do something like 
99a8c8356573ff16b668f2d39a447355c673fee3 , but that’s verbose and working with 
libs should be simple.
    
    Any ideas?
    
    [1] 
https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.html5rocks.com%2Fen%2Ftutorials%2Fspeed%2Fscript-loading%2F%23disqus_thread&amp;data=02%7C01%7Caharui%40adobe.com%7C89b59cc20eff4f34398308d7fb39180f%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637254094944356465&amp;sdata=8BCjJ8oV6h2U2wxgorysLU8Sm5tTGwAP7XBEL7yhca4%3D&amp;reserved=0
    
    From: Alex Harui<mailto:aha...@adobe.com.INVALID>
    Sent: Monday, May 18, 2020 8:03 AM
    To: dev@royale.apache.org<mailto:dev@royale.apache.org>
    
    
    Subject: Re: Script Loading Order (Continuing Heads-Up thread from Users)
    
    Every time I look, closure seems to change how it works.  It looks like 
they are using callbacks and UIDs.  I assume they can't use await or Promise 
because of IE support.  I haven't looked at the code you generate, but might 
have to do something similar, IOW, wait for the callback or known value before 
continuing.
    
    I think that if we create the script during the running of another script 
that we have to find a way to wait for that created script.
    
    It might help to know what kind of initialization code needed the 
definition so early.  One alternative is that such code needs to be responsible 
for waiting.
    
    Most of our Application classes have a wait mechanism.  We could leverage 
that, but that's also pretty late.
    
    It could be that for Applications we generate the script in the head, and 
for modules we generate a separate script that is preloaded.
    
    HTH,
    -Alex
    
    On 5/17/20, 9:03 AM, "Yishay Weiss" <yishayj...@hotmail.com> wrote:
    
    
        >Is the script tag from inject_script going before or after the script 
tag for the application (should be before, >IMO)?
    
        It’s going before but the network shows it’s loaded after.
    
        >Make sure the script tag has the same settings as the script tags 
google closure uses in js-debug.  I think they set some options so the scripts 
load in order.
    
        I see type being specified in the gcl script elements, while inject 
ones don’t. I suppose it’s worth seeing if that makes a difference, though I 
couldn’t find evidence for that on the web.
    
    
    

Reply via email to