はじめに
以前、Ruby on Railsをつかって囲碁を書いたことがあったのですが、実装がよみにくく、デバッグがむずかしかった思い出があります。
実装を複数のファイルに分割できれば、実装を小さくでき、読みやすくなると考えていました。けれど、どうすればいいのか分からずにこれまで放置してきました。
NodeJSにrequireというやつがあって、これをつかえばいいはずと思ったのですが、サーバーサイドの話なので、同じようにはできないようです。NodeJSのrequireの詳細についてはよくわかっていないので、ここでは取り扱いません。
はじまりは
ひさしぶりに、Backbone.jsガイドブックを読み返していました。たしか、ユニットテストを書いてみようとおもって読み始めたはずです。
ユニットテストについてQUnitの章に書かれています。QUnitを読み始めると、テストを書くときにRequireJSをつかっているようでした。なので、さきにモジュール管理のRequireJSの章を読んでおこうということになりました。
RequireJSの章を読んでみると、簡単に実装を複数のファイルに分割できることがわかってきました。それで、放置してきた問題に着手しはじめることになりました。
それで
goを書きました。CSSを実装していないので、みためがわるいです。けれど、実装はシンプルになりました。
実装の話になりますが、MVCを意識してみました。モデルにいろいろな処理を持たせればいいとおもって書き始めたのですが、ビューとモデルの間にいろいろな処理を実装することになりました。正しいかどうかはわかりませんが。。。
つまずいたこと
読んだだけでは理解できていなかったようで、次のような失敗をしてしまいました。これだと依存元(このモジュールを参照するモジュール)でheloを参照できません。
define(function () {
var module = {
helo: "hello"
}
});
次のように書けば、依存元のモジュールでheloを参照できます。my_helo.jsのmodule変数の可視性はpublicになります。ただし、ops変数は依存元のモジュールからは参照できません。可視性がprivateだからです。
define(function () {
var ops = "ops";
var module = {
helo: "hello"
}
return module;
});
RequireJSにGetting Startedなどドキュメントがありますので、そちらも参照していただければと思います。