> Haha wow. This is fantastic! I was sure you would liked it :-)
Thanks, Frédéric THOMAS ---------------------------------------- > Date: Tue, 23 Jun 2015 22:54:00 -0700 > Subject: RE: [FalconJX FlexJS] JQuery up and running, a nightmare but we now > have 1.9 in AS > From: bigosma...@gmail.com > To: dev@flex.apache.org > > On Jun 23, 2015 9:51 PM, "Frédéric THOMAS" <webdoubl...@hotmail.com> wrote: >> >>>> HtmlContainer.load([JQUERY_SCRIPT], init); >>> >>> As a >> side note, this can be also used in FlexJS application (swf / swc), not >> only externs JS based applications, the callback will be called >> immediately, that's it. >> >> To make things even clearer, especially because I use conditional > compilation with 2 build configurations, I can build my library in a once > with IntelliJ. >> >> https://paste.apache.org/kOwX >> >> My AS Build Configuration: >> -define+=CONFIG::AS,true >> -define+=CONFIG::JS,false >> > -include-file=js/out/HtmlContainer.js,out\production\HtmlContainer\js\out\HtmlContainer.js >> >> My JS Build Configuration: >> -define+=CONFIG::AS,false >> -define+=CONFIG::JS,true >> -js-output-type=FLEXJS >> > > Haha wow. This is fantastic! > > Thanks, > Om > >> Frédéric THOMAS >> >> ---------------------------------------- >>> From: webdoubl...@hotmail.com >>> To: dev@flex.apache.org >>> Subject: RE: [FalconJX FlexJS] JQuery up and running, a nightmare but > we now have 1.9 in AS >>> Date: Tue, 23 Jun 2015 19:55:05 +0100 >>> >>>> HtmlContainer.load([JQUERY_SCRIPT], init); >>> >>> As a side note, this can be also used in FlexJS application (swf / > swc), not only externs JS based applications, the callback will be called > immediately, that's it. >>> >>> The function as it is today is simple but could be implemented to send > events instead of using a callback, parallel downloads, css, etc... >>> >>> It is not as perfect as adding a MetaTag in AS (emitted only in JS) to > do the same job (or event better, what I was thinking, to emit directly the > Script tag comment in the generated JS file) but it works. >>> >>> Frédéric THOMAS >>> >>> >>> ---------------------------------------- >>>> From: webdoubl...@hotmail.com >>>> To: dev@flex.apache.org >>>> Subject: RE: [FalconJX FlexJS] JQuery up and running, a nightmare but > we now have 1.9 in AS >>>> Date: Tue, 23 Jun 2015 19:27:55 +0100 >>>> >>>>> It just occurred to me that you can’t use this sort of mechanism > because >>>>> none of the JS or AS actually gets baked into the final JS so there > will >>>>> never be an <inject_html> tag found by the scan. >>>> >>>> I know that, that's why I'm proposing other mechanisms. >>>> >>>> I just created a HtmlContainer.swc with the simple extern JS based > function I shown before to load multiple scripts, adding this lib in my > project, I can now use it to import the jQuery JS library or any other from > inside the AS code, rebuild, and it will work from the generated > index.html, like that: >>>> >>>> private static const JQUERY_SCRIPT:String = ' > https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js'; >>>> >>>> public function start():void { >>>> HtmlContainer.load([JQUERY_SCRIPT], init); >>>> } >>>> >>>> private function init():void { >>>> const button:Element = document.createElement("button"); >>>> button.onclick = function ():void { >>>> alert("Hello browser from FalconJX!"); >>>> }; >>>> button.textContent = "Say Hello"; >>>> document.body.appendChild(button); >>>> >>>> var div:HTMLDivElement = document.createElement("DIV") as > HTMLDivElement; >>>> >>>> $(document.body).append(div).ready(function():void { >>>> $(div).html("This is Hello World by JQuery"); >>>> $(div).css("border", "2px solid green"); >>>> $(div).insertBefore(button); >>>> }); >>>> } >>>> >>>> Frédéric THOMAS >>>> >>>> >>>> ---------------------------------------- >>>>> From: aha...@adobe.com >>>>> To: dev@flex.apache.org >>>>> Subject: Re: [FalconJX FlexJS] JQuery up and running, a nightmare but > we now have 1.9 in AS >>>>> Date: Tue, 23 Jun 2015 17:06:32 +0000 >>>>> >>>>> >>>>> >>>>> On 6/23/15, 8:53 AM, "Frédéric THOMAS" <webdoubl...@hotmail.com> > wrote: >>>>>> >>>>>>Playing with the externs, we've seen that in order to customize our >>>>>>index.html (adding a Script tag for JQuery for example) we had to > create >>>>>>another index.html outside the build folder referencing our main .js >>>>>>because the original one was overridden each time we built, so, > instead >>>>>>of doing that, I was looking for a way to write our Script tag from AS >>>>>>which is not possible at the moment and we haven't got a template > index >>>>>>to use neither. >>>>>> >>>>>>ok, IIUC, the goal of having externs is to ease the implementation of >>>>>>as/js components giving the possibility to implement them in AS and > use >>>>>>the generated JS as JS source of the new FlexJS component, so, we > can, in >>>>>>the generated JS, add a comment to load a JS Script or CS. >>>>>> >>>>>>But still, if I look at the jQuerySample.mxml, I can see something > that >>>>>>should be done at each build, not every user friendly: >>>>>> >>>>>> >>>>>>So, my goal was to simplify link and script tags either making them >>>>>>accessible from the AS via a MataTag for example or having an utility >>>>>>class to download dynamically those resources and add them to the > head of >>>>>>the html application container. >>>>>> >>>>>>Am I clearer ? Did I miss something ? Is that a bad direction ? >>>>> >>>>> Yeah, I think I get it. Actually, that comment in JQuerySample.mxml is >>>>> obsolete. The org.apache.flex.jquery.Application.js has <inject_html> >>>>> tags in a comment in that file, and GoogDepsWriter.java and >>>>> MXMLFlexJSPublisher.java find it and add it to the index.html. That is >>>>> how FlexJS handles bootstrapping JS frameworks. >>>>> >>>>> It just occurred to me that you can’t use this sort of mechanism > because >>>>> none of the JS or AS actually gets baked into the final JS so there > will >>>>> never be an <inject_html> tag found by the scan. >>>>> >>>>> The reason it works for FlexJS is because some non-extern class like >>>>> Application has to be used in the app. If you create your own Jquery >>>>> Application that folks must subclass in their apps then you can use > the >>>>> same mechanism. Otherwise, you probably need to invent a new > mechanism. >>>>> >>>>> One idea I considered was this: Right now in any SDK there is a >>>>> flex-config.xml and an air-config.xml and often an > airmobile-config.xml. >>>>> These configs specify a set of libraries and other settings. We could >>>>> create a js-config.xml and jquery-config.xml and figure out a way to > tell >>>>> the compiler in the -config.xml what to inject into the .html. Then > in FB >>>>> and elsewhere, you can switch by adding +configname=js or >>>>> +configname=jquery just like we do +configname=air >>>>> >>>>> I’m sure there are other ways as well. >>>>> >>>>> Thoughts? >>>>> -Alex >>>>> >>>>> >>>> >>> >>