何処かのブログ記事で、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 Math – CommonJSスタイル?シングルコンテキスト?? | LEGGODT.COM – 小さな Titanium Mobile の読み物 – titanium でシングルコンテキストな書き方にチャレンジ – インターネット時代のキャリアプランとは? – Titanium Mobile Best Practices – JP::HSJ::Junknews::HatenaSide – CommonJS Modules in Titanium – JP::HSJ::Junknews::HatenaSide
ありがとうございます!