APIを利用した、オープンソースのシステムトレードフレームワークです。・自分だけの取引アルゴリズムで、誰でも、いますぐ、かんたんに、自動取引を開始できます。この広告は、90日以上更新していないブログに表示しています。ToDoリストを作るチュートリアルです。ポイントMVVMアーキテクチャでテスタブルにMVVMアーキテクチャを採用し、View(HTML/CSS)とViewModel,Modelを分離。HTMLに非依存となるため、単体テストが可能になります。オブジェクトの生成と依存関係を、DIコンテナで一元管理DIコンテナを利用して、ViewModel、Modelの生成と関連付けを自動化。コンポーネント間の結合を疎にでき、テスト時のモックへの差し替えも簡単にできるようになります。いうことで、ソースファイルはクラスごとに分割管理します。ソース間の依存関係解決と読み込みはrequire.jsで。1ファイルに結合して読み込みを最適化します。結合してリリースソースはこちらで公開しています。細かいところは省略していたりするので、ソースも合わせて参照ください。作成するTodoリストの機能は以下。タイトルを入力して、Todoを登録できる。終了したTodoは「完了」にできる。完了したものを未完了に戻すこともできる。Todoを個別に削除できる。完了したTodoはまとめて削除できる。作られているものと大体同じはず。UIは以下のような感じで。本来は登録したTodoをサーバーに送って保存とか必要ですが、今回はJavaScriptプロジェクトのサンプルということでサーバーとの連携部分は省略します。APIなりなんなりを呼び出すようにすればOK。Modelを作るまずは、Modelを作ります。クラスは、TodoとTodoリスト(登録されたTodoの集まりを表すもの)の二つ。モデルはPlainなJavaScriptクラスとして定義します。ライブラリ)依存にはしない派。テスタブルで変化に強いモデルにするためには、PlainなJavaScriptクラスにしておくべきと思うのです。Todoタイトル(title),完了したかどうか(completed)、作成日(createdAt)、最終更新日(lastModified)の属性を持ちます。タイトルは100文字まで。各種属性の変更を通知する仕組みを持ちます。(Observerパターン)完了にする(complete)/未完了に戻す(activate)操作ができます。現在時刻はTimeSourceから取得するようにしています。現在時刻に依存しないテストにするためのワンポイント。テスト時にはTimeSourceをモックに差し替えて、テスト内での時間をコントロールします。Object.freeze(Todo);});TodoListTodoの配列(items)と、それを操作するメソッド(Todoの追加や削除)を持ちます。Todoと同じく、こちらもObserverパターンでTodoの追加/削除を通知する仕組みを用意。ModelをテストするModelができたので、テストを書きます。テスティングフレームワークはJasmineを利用。Todo,TodoListそれぞれで、各種プロパティを変更できる、変更したらイベントが発火される、あたりを確認。});テストが書けたら、実行環境を整備していきます。(定期ビルドでの確認用)の2つを用意。HTML版Jasminのテストランナーをベースに作成します。テストをブラウザ上で実行する時に読み込ませるHTMLファイルtest.htmlは以下の内容。</body></html>config.jsにrequire.jsの設定を書きます。pathsに依存モジュールのパスを設定。テストを読み込みます。"test/specs/models/todo-list"]);あとは、test.htmlをブラウザにドラッグ&ドロップすれば、テストが実行されるはず。コマンドライン版Antを使います。javaタスクでRhinoからテストを実行します。</target></project>cui.jsの内容は以下。Rhinoでテストを実行するための設定をごにょごにょ書いていきます。config.js,all-specs.jsはhtml版と共有。