[ 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 Math](http://d.hatena.ne.jp/badatmath/20101026/1288109275)
– [CommonJSスタイル?シングルコンテキスト?? | LEGGODT.COM](http://leggodt.com/2012/01/05/commonjs-style-singlecontext.html)
– [小さな Titanium Mobile の読み物](http://imthinker.net/titanium/)
– [titanium でシングルコンテキストな書き方にチャレンジ – インターネット時代のキャリアプランとは?](http://d.hatena.ne.jp/h5y1m141/20110930/p1)
– [Titanium Mobile Best Practices – JP::HSJ::Junknews::HatenaSide](http://d.hatena.ne.jp/donayama/20120102/bestpractices)
– [CommonJS Modules in Titanium – JP::HSJ::Junknews::HatenaSide](http://d.hatena.ne.jp/donayama/20111230/commonjs_modules_in_titanium)

ありがとうございます!

コメントを残す

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