I have no special preference regarding syntax as long as it’s simple to use and 
easy to parse.

From: Josh Tynjala<mailto:joshtynj...@bowlerhat.dev>
Sent: Tuesday, May 19, 2020 7:20 PM
To: Apache Royale Development<mailto:dev@royale.apache.org>
Subject: Re: Script Loading Order (Continuing Heads-Up thread from Users)

I'm not a fan of this syntax. It's a weird mix between HTML/XML and... some
kind of flat configuration file?

I'd rather use a separate <inject_script> for each JS file and a separate
<inject_styles> for each CSS file.

Or maybe something like this:

@inject_script path/to/script.js
@inject_styles path/to/styles.css

--
Josh Tynjala
Bowler Hat LLC <https://bowlerhat.dev>


On Tue, May 19, 2020 at 12:22 AM Yishay Weiss <yishayj...@hotmail.com>
wrote:

> I propose to change the syntax to
>
> <inject_sources>
>                 js=http://js1.js
>                 js=http://js2.js
>                 css=http://css1.js
> <inject_sources>
>
> If it’s in the main app the compiler will parse this and inject html, same
> way it did before. Injected html is ensured to load serially, so it should
> load before App.js.
>
> If it’s in a module the compiler will parse this and inject a script to
> the __deps file we create for modules, similar to what’s being done now. It
> may be that we’ll need to add to the script some mechanism to ensure serial
> loading, similar to what gcl does.
>
> I can explore this when I have more time, probably next week, or someone
> else is welcome to fix this differently.
>
> Thanks.
>
>
>
> From: Alex Harui<mailto:aha...@adobe.com.INVALID>
> Sent: Monday, May 18, 2020 7:53 PM
> To: dev@royale.apache.org<mailto:dev@royale.apache.org>
> Subject: Re: Script Loading Order (Continuing Heads-Up thread from Users)
>
> Ah, ok.  I thought that closure was injecting the main app's script block
> so the dynamic script would be in front of it but it makes sense that
> wouldn't happen at release time.
>
> IIRC, we control the launch of the app.  I thought there is one more
> script somewhere that calls app.start() that is generated by the compiler.
> IMO, that script can be altered to wait for scripts to load.
>
> HTH,
> -Alex
>
>
> On 5/18/20, 8:44 AM, "Yishay Weiss" <yishayj...@hotmail.com> wrote:
>
>     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%7C11eca28410ab4d377cb408d7fb4254da%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637254134629069170&amp;sdata=NuGReT8L9tH9K1VQNxgN%2BctVG3WDACYxMsaSywrTOSc%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