not good but great

プログラミング、アート、映画・本の感想について書きます。

Titaniumで共通な処理をexportsに関数として設定して、requireで読み込む

CommonJS準拠に書き直してみよう

前回エントリでCommonJSについて少し知ることが出来ました。それまで書いていたコードをCommonJSに従って書き変えることにしました。具体的にはexportsで関数を作成して、requireで読み込むことをします。

・前回エントリ
TitaniumでCommonJS仕様に乗っ取って、ファイルをincludeする - not good but great

書き直すコードは以前から作っていた競馬ニュースのフィードを読み込むアプリになります。
TitaniumのYQLで複数フィード読み込み、Backボタンの文字色を変える - not good but great

Window作成を書き直してみる

win.js

exports.setWindow = function(name){
	//タイトルのラベル
	var titleLabel = Ti.UI.createLabel({
		text:name,
		color:"#FFF6EE",
		font:{
			fontSize:20,
			fontWeight:"bold"
			}
	});
	
	var win = Ti.UI.createWindow({
		backgroundColor:"#F2E9E1",
		titleControl:titleLabel
	});
	//バーの色
	win.barColor = "#8C837B";
	
	return win;
};

タブメニューで切り替えるところに使うwindowに共通の部分が多くありました。違うのはタイトルくらいだったので、タイトルを引数にして、関数をつくりました。

app.js

//モジュールを読み込む
var win = require("win");

//window作成
var win1 = win.setWindow("競馬ニュース"),
	win2 = win.setWindow("2ch まとめ");

引数にwindowオブジェクトを指定しているので、以降のコードを書き直す必要がありませんでした。app.jsがかなりスッキリして、見やすくなったと思います。

感想とか

この記事のタイトルはどう書けばよいのか迷いました。「exportsに関数をセットする」という言い回しは聞いたことがありましたが、実際何をやっているのかよくわかりませんでした。だから「関数として設定する」という言い方にしました。「exportsオブジェクトのプロパティに関数を設定する」とも言えるのでしょうか。もう少しそのあたりの勉強が必要みたいです。