> 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
>>>>>
>>>>>
>>>>
>>>
>>
                                          

Reply via email to