Helpful, thanks.


________________________________
From: Josh Tynjala <joshtynj...@apache.org>
Sent: Thursday, May 2, 2019 5:36:35 PM
To: dev@royale.apache.org
Subject: Re: RE: Example of access external JS using Apache Royale

> Users can't do this, they required that Royale framework devs add typedefs to 
> the typedefs repo and wait to next SDK release. What does not seems very 
> useful.

Users can create their own typedefs from scratch.

I just created a quick example for hljs, that exposes the highlightBlock() 
function:

https://paste.apache.org/dIq0

Basically, the class needs an asdoc comment with the @externs tag (this is 
something that comes from Google Closure compiler, which we use to create 
release builds) and the compiler should handle the rest.

As I understand it, you don't even need to create a SWC library for custom 
typedefs. Recently, Alex mentioned that the mxmlc compiler is smart enough to 
handle a source file as long as it has the @externs tag.

- Josh

On 2019/05/02 09:34:37, Carlos Rovira <carlosrov...@apache.org> wrote:
> Hi,
>
> to sumarize (let me know if I'm wrong), the current ways to integrate an
> existing library are 3:
>
> 1.- access vía brackets notation: This is the most easy and direct, an
> example is TourDeJewel in class utils.HighlightCode
>
> var hljs:Object = window["hljs"];
> hljs["highlightBlock"](block);
>
> but this one is not what we really want since we are going with Roayle and
> AS3 to get type checking and strong typing. So this, although useful is not
> what we really want to use in out Apps, but since we want to maintain the
> dynamic aspect of the language it could be very useful sometimes
>
> 2.- using typedefs
>
> This will be the next step to use a real type and dot notation, but seems
> not easy or direct.
> Users can't do this, they required that Royale framework devs add typedefs
> to the typedefs repo and wait to next SDK release. What does not seems very
> useful.
>
> In the other hand we'll need to know how to extend current typedefs since
> don't know if we have docs about this. Until now I added to "missing.js"
> file fo now, but this doesn't seems a valid path since it lacks
> organization, separation, and a way for all people contributing to know wha
> we have, what can be added and where, if not we'll find in time lots of
> code very difficult to maintain.
>
> Yishay and Josh talked about to use TypeScript, but seems that is already
> explored by Josh but not a valid path since will be very difficult to
> maintain.
>
> 3.- wrapping libraries
>
> This is how we did with MDL. This will be recommended when we want to
> integrate existing libraries with Royale to make it work with our APIs in a
> more seamless way. But the problems is that this is very laborious. Can be
> useful for some concrete libraries and we should do when needed (the case
> is MDL). But the problem is that this not solve the problem of our users
> that need to integrate a existing library themselves in a quick way.
>
> Let me know if you know other way.
>
> For me method 1, is ok to do the work, but doesn't make us justice.
> method 2 should be the main one if there's a fast and easy way... I'm
> missing something here? Can users create typedefs themselves?
> method 3 can be useful for us or for users (doing their own libs, and
> eventually can share with us to add to official royale repo and sdk)
> but is something not fast at all and not as convenient and direct as method
> 2, and will require maintenance as libs change.
>
> Could we agree that this is the currently available ways in Royale now to
> use external JS libs?
>
> thanks
>
> --
> Carlos Rovira
> http://about.me/carlosrovira
>

Reply via email to