流行りっぽいツールを組み合わせたミニマルpjaxサンプル書いた
先日、Meteorっていうツールが話題になっていて、いろいろ見てみたんですけど、pjaxいいなぁと思って、今まで実装したことなかったので、Mojolicious::Liteで実装してみました。
ついでに流行りっぽいツールを組み合わせてみました。
サンプル
1ファイルなので、ミニマルですってことです。コードもなるべく短くなるようにしました。
ここで使ってるツールは流行ってるし、オシャレですね。
どうもMojolicious::Liteが一番流行ってなさそうですね。流行らせたいですね。
公式サイトのオシャレさはピカイチなんですけどね。
もとい、自分の周りからでもPerl流行らせたいですね。
試す方法
Perl5.10.1以上が入ってる環境で、以下の手順でミニマルpjaxサンプルを試せます。
- http://mojolicio.us/のトップページからtar.gzで圧縮されたMojoliciousをダウンロード(インストールしてもよいです)
- ダウンロードしたMojoliciousの最終バージョンを解凍し、mojoとでも付けておく
- 上記のgistのファイルをmojoディレクトリに設置する
- 設置したapp.plの2行目に、
use lib "lib";
を追加する - ターミナルでmojoディレクトリに移動する
- そのディレクトリ内で以下のコマンドを叩く
$ ./script/morbo app.pl
最後にlocalhost:3000にアクセスすれば試せます。
まとめ
流行ってる感じでオシャレ。
まじめなまとめ
pjax、初めて試しましたが、とても良いですね。特にユーザー側に不便をかけるわけでもなく、反応速度が上がるってのが良い。
しかも、後からpjaxに対応しても、そんなに手間じゃないのがいいですね。
ただ、pushStateに対応していないブラウザは、Backbone.jsのRouterがハッシュのついたURLに変更してしまうので、その辺りが採用できるかできないかの基準になるかなと思います。
Mojoliciousのせいなのかわかりませんが、IEでどうしても$c->req->headers->is_xhr
が取れなかったので、jquery-pjaxと同じように、リクエスト時のパラメータに_pjax=true
を付けるという対応にしました。
LESSとCoffeeScriptのファイルを読み込む時は、これらのリクエストがis_xhrではないので、レイアウトを読み込んでしまうのを避けるために、_pjaxを指定しています。
今回のサンプルはCoffeeScriptとかLESSを直接パースするようにしていますし、CDNからファイルを持ってきているので、実運用では、コンパイルするものはコンパイルして、サーバーに置くものはダウンロードして、publicディレクトリに入れておくべきだと思います。
以上、まじめなまとめでした。