土日Mithril触ってて、ドキュメント読むの面倒!と思ってたところ、オライリーから日本語の本が発売されたと聞いたので早速買って読んでみた
本について
Mithril自体についての解説 + Mithrilでなんか作るサンプル という構成。
Mithrilの解説
なんか作るサンプル
- Bootstrapと組み合わせるサンプル (§5)
- mocha + power-assert + JSDOM でテスト (§8)
- Promiseの解説 (§10)
- TypeScriptで書いてみるサンプル (§12)
JSのMVCフレームワークとか触ったことない人でも読めるようにはなっているな?
↓その他↓
「Router」は「ラウター」と発音する
Mithrilについての感想
ミニマルで良い
mithrilは16個のメソッドしか無い。
個人的には
- Promise関連明らかに要らないので -2個
startComputation
,endComputation
も使いたくないので -2個- withAttrも使いたくないので -1 個
- 常に
m.route
使えばm.mount
,m.render
要らないので -2個
ということで9個のメソッドしか使わないで済みそう :punch:
startComputation, endComputation むずい
Mithril は Model の更新そのものではなく、更新を起こす処理の開始と終了を監視して View に反映する。
非同期処理など Mithril が自動的に監視できないケースでは、ユーザ側で m.startComputation()
/ m.endComputation()
とすることで、処理の開始/終了を伝え、View に反映させることができる。
m.startComputation()
を呼んだ後は必ず m.endComputation()
しないといけない。
もし分岐やエラーで m.endComputation()
をスルーしてしまうと、その後 View は更新されなくなってしまう。
start する度に Mithril 内部のカウンタを +1 し、endで -1 して カウンタが0になれば更新、という方式なので、他の処理で m.endComputation()
が呼ばれてもダメだ。
むずすぎるので僕は m.redraw()
しか使わないかな―
Viewもっと書きやすくしてくれ
ReactでJSXに慣れてしまった身体には、Mithrilのviewの書き方は結構ダルい。 こういうやつ↓
view : function (vm) { return m('.Timer', [ m('.Timer__BPM', vm.bpm()), m('.Timer__Interval', vm.interval()), m('.Timer__TapButton', { onclick: ::vm.onClick }), ]); }
一応 MSX ってのがあるけどあんまり使われて無さそう。
正直パフォーマンスで困ることあんまり無いので、MithrilからVirtualDOM機能ぬいた「ミニマルなラウター付きMVCフレームワーク」として使いたいという気持ちがある。
まとめ
「Mithril試したいけどドキュメント読むのしんどい」という人にオススメ。
Mithrilのドキュメント、詳しいんだけど、めっちゃ長いから読む気なくすんだよね……
参考画像↓
追記
ドキュメント日本語訳あるそうです
もっと詳しく知りたいとなったらドキュメント読むと良さそう