2013年11月27日 星期三

Titanium CommonJS Best Practice

Reference: http://smorgasbork.com/index.php?option=com_content&view=article&id=132

Two ways to expose a module

Method 1
A generic module object with its own set of properties and methods (add properties and methods to "exports")


function functionA() } 
function functionB() { } 
exports.functionA = functionA; 
exports.functionB = functionB;

To use these function outside the module:


var Util = require('/Util');Util.functionA();

Method 2
Class definition that is used to instantiate objects (replace the "module.exports" object)


var _privateStaticMember = 'PrSM';

function MyClass ()
{
    var _privateInstanceMember = 'PrIM';

    var _privateInstanceMethod = function ()
    {
        return _privateStaticMember + ',' 
            + _privateInstanceMember + ','
            + MyClass.publicStaticMember + ','
            + this.publicInstanceMember;
    };

    this.publicInstanceMember = 'PuIM';

    this.publicInstanceMethod = function () 
    {
        return _privateStaticMember + ',' 
            + _privateInstanceMember + ','
            + MyClass.publicStaticMember + ',' 
            + this.publicInstanceMember;
    };
}

var _privateStaticMethod = function ()
{
    return _privateStaticMember + ',' + MyClass.publicStaticMember;
};

MyClass.publicStaticMember = 'PuSM';

MyClass.publicStaticMethod = function ()
{
    return _privateStaticMember + ',' + MyClass.publicStaticMember;
};

module.exports = MyClass;

To use 
var MyClass = require('/MyClass');
var o = new MyClass(); 
alert( o.publicInstanceMember ); 
alert( o.publicInstanceMethod() ); 
alert( MyClass.publicStaticMember ); 
alert( MyClass.publicStaticMethod() );



沒有留言:

張貼留言