Hi Yishay, sorry to benign late here. I'm just with few time these days.
I think we should not mix concepts. One thing is, a @extern should work as alway (using the inject_XXX we finally choose), for various reasons: we want the stub to be related in that part to the js library that's mirroring (so that's the sense of that class), and for PAYG reasons (we can't add the need to all @externs code to have a Facade). Other thing is we want to show the use of static initializers, that's ok for me, but not as a need for @externs, so just as a developers option to use in the case they want. So sorry, but I'm not aligned with the Facade option, we need to keep the declaration in the same @externs stub for sure El mar., 19 may. 2020 a las 19:34, Yishay Weiss (<yishayj...@hotmail.com>) escribió: > 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&data=02%7C01%7Caharui%40adobe.com%7C89b59cc20eff4f34398308d7fb39180f%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637254094944356465&sdata=8BCjJ8oV6h2U2wxgorysLU8Sm5tTGwAP7XBEL7yhca4%3D&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 > http://about.me/carlosrovira > > -- Carlos Rovira http://about.me/carlosrovira