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