Yishay,

I didn't think static initializers would require a façade or other fancy 
mechanism.  What kind of AS code ends up requiring this more complex solution?

-Alex

On 5/19/20, 10:34 AM, "Yishay Weiss" <yishayj...@hotmail.com> wrote:

    Hi Carlos,
    
    Sorry for not responding earlier, I missed this post.
    
    I haven’t been able to replicate this in debug mode, so it’s interesting 
you’re seeing that.
    
    I agree the façade solution is a bit cumbersome, but it works and maybe 
it’s worth having it out there as an example of using static initializers 
instead of injected code.
    
    What do you think?
    
    From: Carlos Rovira<mailto:carlosrov...@apache.org>
    Sent: Monday, May 18, 2020 7:34 PM
    To: Apache Royale Development<mailto:dev@royale.apache.org>
    Subject: Re: Script Loading Order (Continuing Heads-Up thread from Users)
    
    Hi Yishay,
    
    I'm confused. The problem I reported was this;
    
    ReferenceError: dialogPolyfill is not defined at
    
/Users/carlosrovira/Dev/Royale/Source/royale-asjs/examples/jewel/TourDeJewel/target/javascript/bin/js-debug/App.js:10:1
    
    And just as I'm copying here I'm seeing that while I'm running
    "js-release", notice that the link refers to "js-debug", so I think there's
    some wrong path involved here
    
    I just updated with your latest change about hljs but I don't think we have
    a problems with it. A part from that I don't like the solution to make a
    Facade for a script, since that involves to create 2 classes instead of
    one. The solution should be just make 1 as3 file (instead of two) and that
    have the proper inject reference.
    
    Please can you revert the hljsFacade?
    
    thanks
    
    
    
    
    El lun., 18 may. 2020 a las 17:44, Yishay Weiss (<yishayj...@hotmail.com>)
    escribió:
    
    > Unless I missed something that’s what it’s doing right now after my fix.
    > I’ll try to explain the scenario as I see it (no modules).
    >
    > Suppose we have an app that compiles to the following html.
    >
    > <html>
    >                 <head>
    >                                 <script type="text/javascript">
    >                                                 var script =
    > document.createElement("script");
    >                                                 script.setAttribute("src",
    > "hljs.min.js");
    >
    > document.head.appendChild(script);
    >                                 </script>
    >                                 <script type=”text/JavaScript”
    > src=”App.js”></script>
    >                 </head>
    >                 <body></body>
    > </html>
    >
    > After the first script element is loaded, the dom will look like:
    >
    > <html>
    >                 <head>
    >                                 <script type="text/javascript">
    >                                                 var script =
    > document.createElement("script");
    >                                                 script.setAttribute("src",
    > "hljs.min.js");
    >
    > document.head.appendChild(script);
    >                                 </script>
    >                                 <script type=”text/JavaScript”
    > src=”hljs.min.js”></script>
    >                                 <script type=”text/JavaScript”
    > src=”App.js”></script>
    >                 </head>
    >                 <body></body>
    > </html>
    >
    > However, App.js will still be loaded before hljs.min.js because it was not
    > created dynamically. App.js will fail because it depends on hljs.
    >
    > From: Alex Harui<mailto:aha...@adobe.com.INVALID>
    > Sent: Monday, May 18, 2020 6:21 PM
    > To: dev@royale.apache.org<mailto:dev@royale.apache.org>
    > Subject: Re: Script Loading Order (Continuing Heads-Up thread from Users)
    >
    > 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%7Cd1f300255d7f46f3472808d7fc1aefad%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637255064930991098&amp;sdata=LVleS2MHLv4Pjb9M5QcrsjkgxM00hstfuLdBrr8vCz0%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.
    >
    >
    >
    >
    >
    
    --
    Carlos Rovira
    
https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&amp;data=02%7C01%7Caharui%40adobe.com%7Cd1f300255d7f46f3472808d7fc1aefad%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637255064930991098&amp;sdata=kvSg4mPijs4ZcZwXSObM12iY6r9iuDM%2F8YPlO9E%2FO7I%3D&amp;reserved=0
    
    

Reply via email to