書きたいネタはいくつかあったのですが、どうしてもコード書きたい気持ちのほうが強くついつい更新サボってました。
"以前書いたエントリ"以降、実際に手を動かしながら色々やっているうちにシングルコンテキストな書き方にも大分なれてきたのと同時に、RSSリーダーのようなビューワー的アプリをTitaniumで作る時の自分なりのフレームワークのようなものがボンヤリと見えてきたので、ちょっとまとめて見ました。
MVC的にファイルを分ける
以前からMVC的にファイル分割する方法は模索して、現時点でこんな感じに落ち着きました
- app.js
- /action
- /ui
- /model
app.jsは名前空間定義したり、action,model,uiのそれぞれのファイルをincludeするだけの処理に留める形で考えてます
Controller的な役割をactionディレクトリ配下にあるファイルに役割を担わせるようかと思っていて、ui,modelは名前そのままの役割を担うようにしています
雛形とあるディレクトリ、ファイルを自動生成する
必要なディレクトリ作成して、(function(){}).call(this)...とタイプするのが面倒なのと、「TitaniumMobileを使って15分で作るiPhoneアプリ」というデモを社内で行う都合もあって雛形とあるディレクトリ、ファイルを自動生成するRubyスクリプトを書きました
#init.rb base_dir = Dir::pwd dir_name = ["action","ui","model"] js_template = "" js_template << "(function(){\n" js_template << " //\n" js_template << "}).call(this);\n" js_template << "\n" js_template << "Ti.include()\n" dir_name.each do |dir| Dir::mkdir(base_dir + "/" +dir) if(dir=="action") fname = "main" else fname = dir end f = File.open(base_dir + "/" + dir + "/" + fname + ".js", "w") f.write(js_template) f.close end
使い方としては、TitaniumプロジェクトのResourcesディレクトリに移動してターミナルで
ruby init.rb
とすれば必要なファイルが自動生成されます。
すでにディレクトリが存在しているかどうか等の細かいエラーチェックを入れてないし、JavaScriptのtemplateとなる部分は別ファイルにしておいてそこから読み込むみたいな形にすればより使い勝手あがりそうな感じだけど、折角作ったのでコード晒しておくことにしました