incubator-flex-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Erik de Bruin <e...@ixsoftware.nl>
Subject Re: [FalconJx] Prototype ActionScript -> JavaScript compiler code up in svn
Date Fri, 14 Dec 2012 13:53:08 GMT
> Ok, then not to worry, we can even tests this sooner than later to see
> exactly what the closure compiler does with our namespaces.

Taking the example AS -> JS we worked with last week, let me show you:

//============================**==============================**=======

AS CODE


package com.example.components
{

import flash.display.Sprite;

public class MyTextButton extends Sprite
{
    public function MyTextButton()

    {
        super();
     }

    private var _privateVar:String = "do ";

    public var publicProperty:Number = 100;

    public function myFunction(value: String): String
    {
        return "Don't " + _privateVar + value;
    }
}
}



//============================**==============================**=======

JS CODE (intended, maybe even current, output of FalconJx)

/**
 * CROSS-COMPILED BY MXMLJSC (329449.1) ON 2012-12-07 08:11:27
 */

goog.provide("com.example.components.MyTextButton");

goog.require("flash.display.Sprite");

/**
 * @constructor
 * @extends flash.display.Sprite
 */
com.example.components.MyTextButton = function()
{
    goog.base(this);

    /**
     * @private
     * @type {string}
     */
     this._privateVar = "do ";
}
goog.inherits(com.example.components.MyTextButton, flash.display.Sprite);

/**
 * @type {number}
 */
com.example.components.MyTextButton.prototype.publicProperty = 100;

/**
 * @this {com.example.components.MyTextButton}
 * @param {string} value
 * @return {string}
 */
com.example.components.MyTextButton.prototype.myFunction = function(value)
{
    return (("Don't " + this._privateVar) + value);
}

// Ensures the symbol will be visible after compiler renaming (needed
only for "application" level class)
goog.exportSymbol('com.example.components.MyTextButton',
com.example.components.MyTextButton);



//============================**==============================**=======

JS CODE (run through the Closure Builder)

function a(){this.a="do "}function b(){}function
c(){}c.prototype=b.prototype;a.b=b.prototype;a.prototype=new c;var
d=["com","example","components","MyTextButton"],e=this;!(d[0]in
e)&&e.execScript&&e.execScript("var "+d[0]);for(var
f;d.length&&(f=d.shift());)!d.length&&void
0!==a?e[f]=a:e=e[f]?e[f]:e[f]={};



Now, although we use stuff from the "goog" library ('provides',
'requires', 'base' and 'inherits'), the Closure Builder output is ALL
THAT'S NEEDED for our JS to run in the browser. This means that all
dependencies have been resolved and the code is compiled such that
doesn't need the "goog" library to run... Pretty efficient and highly
optimised, I'd say ;-)

EdB



--
Ix Multimedia Software

Jan Luykenstraat 27
3521 VB Utrecht

T. 06-51952295
I. www.ixsoftware.nl

Mime
View raw message