Davis.jsとは何か
http://davisjs.com/docs
Davis.jsはHTML5 history.pushStateを使ったJavaScriptライブラリである。JSアプリケーションのためにSinatraスタイルでのルーティング制御を可能にする。
ルーティング
Davis.jsの基本はルーティング制御である。リンクのクリック、フォームのサブミット、そしてブラウザの進む、戻るボタン押下などのタイミングに対応するパスにアクションを記述することによって任意のコードを実行することができるようになる。
動詞、パス、コールバック
Davis.jsのルーティングは動詞(Verb),Path,コールバック3つのパーツを含む。
動詞
get,post,put,delete(del)に対応している。
this.get('/people/:name', function (req) { req.params['name'] // this will be whatever name matched from the request path })
パス
アクションを実行したいパスを記述する。
コールバック
該当するメソッド、パスのリンクがクリックされた際に行いたい処理(アクション)を記述する。
before,after
beforeはRouteが実行される前に呼ばれる。return falseするとRouteは実行されないため、前提条件のチェックなどに使われる。
同じくAfterはRouteの後に呼ばれる。Route処理完了後に共通で行いたい処理がある場合(例えばダブルクリックロックのクリア、ログ出力)などに使用するとよい。
this.before(function (req) { // 全ルート共通 }) this.before('/home', function (req) { // /home の場合のみ })
State(状態)とTrans(=transition:推移)
State(状態)に記述したパスはHTTPリクエストを実行せず、ブラウザ上のパスを変更しない。Stateに記述したパスはリンクのクリックやFormのsubmitでは呼ばれないのでtransを使って明示的に呼び出す必要がある。
this.state('/carousel/next', function (req) { // show the next item in a carousel }) app.trans('/carousel/next')
Requests
リクエストはリンククリック、フォームのサブミット、状態の遷移のタイミングでDavisによって生成される。生成されたリンクはコールバックを実行し、ブラウザのヒストリーに登録される。