2012年7月17日火曜日

【Titanium】シングルコンテキストに苦戦

手持ちの本に沿って、Includeで別ファイルを呼んでくるスタイルで多少わかってきたかな、と思ったら
TitaniumMobile2.0からはrequireで呼んでくるシングルコンテキストというスタイルが一般的である事を知りました。

あちこちのサイトをみて多少はわかったけど、まだまだわからない状況です。

こちらのサイト http://ti.imthinker.net/ あたりが比較的わかりやすかった印象。

元々わかってないところに飛び込んできた新情報なのでメリットもよく理解していませんが、
どうやら今はこっちの方法がスタンダードでパフォーマンス面でも優れているようなので
なんとかして覚えたいと思っています。

とりあえず、app.jsにこんな感じに書いて、

var app = {};
app.win = require("mainwin").win();

mainwin.jsにこんな感じに書いておくと、

exports.win = function (){
    var winX = Titanium.UI.createWindow({});
    winX.open();
    return winX;
};

app.winはmainwin.jsに書かれているwinXに成り代わる感じだっていう事まではなんとなく理解しました。
オブジェクトが別ファイルに分割されたという感じ。

app.winがmainwin.jsのwinを呼び出す

mainwin.jsの内容が呼ばれる。

mainwin.jsの関数内でwinXというウィンドウを作る(createWindow)

関数の結果としてwinXを返す(return winX)
exports(require”mainwin”).winはwinXである

app.winはexports(require”mainwin”).winであるので、つまりwinXである。

つながりを整理しようと思ったんですが、まだまだ理解不足ですね。
とりあえず動く状態にはもっていけるようになったんですが、require内に定義したaddEventListenerから
親のjsファイルのオブジェクトに結果を与える事がうまくできません。

どうしたらよいのかなぁ。

0 件のコメント:

コメントを投稿