[ Titanium Mobile ] CommonJS + シングルコンテキストで実装?? #titaniumjp

何処かのブログ記事で、Titanium Mobile の現代的お作法について、

> 最近の Titanium では CommonJS + シングルコンテキストで実装することが推奨されている。

のように書かれていたのだけれど、まったく意味がわからなかったので調べてみた。

シングルコンテキストとは? ———————————————————————-

次のようにウインドウを生成する時、[ url:’hoge.js’ ] を使う方法をマルチコンテキストと呼ぶそうです。

var hoge = Ti.UI.createWindow({
    url: ‘hoge.js’
});

このマルチコンテキストの場合、ウインドウ間のデータ受け渡しを行う方法がグローバル変数しかなく、ちょっと問題らしい。 ウインドウ間で複雑に変数とかのやり取りをしないのであれば、マルチコンテキストでも問題ないそうです。

シングルコンテキストの場合は、require で読み込むので、変数に外からアクセスできるんだそうです。 それから、Ti.include は非推奨になるんだそうな。

シングルコンテキストは、ファイルを分割するな!と言う事ではなさそうです。

CommonJS とは? ———————————————————————-

CommonJS とは、次のように書かれていました。

> Google グループの CommonJS グループで議論されている Server-side JavaScript のための標準仕様。 > モジュールをインポートするための文法から、パッケージの配布方法まで、多岐に渡る議論が行われています。

標準的な JavaScript のコーディングスタイルって事? 良くワカランw

CommonJS + シングルコンテキストのサンプル ———————————————————————-

次のサンプルは、別ファイルに定義されている変数を読み込んで表示します。

app.js

// app.js
var MyApp = {};
MyApp.test = “これは app.js 内の文字列です。”;
MyApp.win = require(“Module”).win();
// Module.js 内の文字列を表示
Ti.API.info(MyApp.win.test);

Module.js

// Module.js
exports.win = function() {
    var self = Ti.UI.createWindow();
    self.test = “これは Module.js 内の文字列です。”;
    // app.js 内の文字列を表示
    Ti.API.info(MyApp.test);
    return self;
};

変数の受け渡しが簡単!

参考にさせてもらったページ ———————————————————————-

node.jsとは何か(3) – I am Bad at MathCommonJSスタイル?シングルコンテキスト?? | LEGGODT.COM小さな Titanium Mobile の読み物titanium でシングルコンテキストな書き方にチャレンジ – インターネット時代のキャリアプランとは?Titanium Mobile Best Practices – JP::HSJ::Junknews::HatenaSideCommonJS Modules in Titanium – JP::HSJ::Junknews::HatenaSide

ありがとうございます!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です