KnockoutJSの紹介

これはKnockoutJSアドベントカレンダー1日目の記事です。


KnockoutJS Advent Calendar 2014 - Qiita


一発目なので最初は KnockoutJS とはどんなものなのかについて書きたいと思います。

KnockoutJSとはMVVMパターンJavaScriptで作る動的なUIをシンプルに構築するライブラリです。
※個人的にはフレームワークではなくライブラリだと思っている


公式サイトには以下のような標語で書かれています。

Simplify dynamic JavaScript UIs with the Model-View-View Model (MVVM)

Knockout : Home


KnokoutJSを一言でいえば、「バインディングフレームワーク」の一種です。

以下の特徴があります。

・他のライブラリ(jQueryなど)に依存しない
IE 6+, Firefox 3.5+, Chrome, Opera, Safari など比較的古いブラウザに対応している


個人的にKnockoutJSが好きな箇所としては主に以下の2点です。

(1) 余計な機能があまりない(学習コストが高くない)
(2)(前述の特徴にもあるように)古いブラウザに対応している


まず、(1)ですが、KnockoutJSでは「data-bind=""」って空でタイプすることができれば7割ぐらいKnockoutをマスターしたものだと思ってもらっても過言ではないです。
3.1までは・・・。

それほどまでに余分な機能は削ぎ落されていてはいるものの、拡張性も高く様々なプラグインも用意されています。


Plugins · knockout/knockout Wiki · GitHub


プラグインは上記ページだけではなく、他にも


SteveSanderson/knockout.mapping · GitHub



SteveSanderson/knockout-projections · GitHub


SteveSanderson/knockout-es5 · GitHub

などといったKnockoutJS作者本人が作ったプラグインも数多くあるので見てみるのもいいと思います。
knockout-mappingについてはまた後日説明しようと思います。

(2) については KnockoutJSはVue.jsとは違い、レガシー・ブラウザもサポートしています。
その代わりVue.jsほどスタイリッシュではないし色々内部で泥臭いこともやっているのですが、現実解として古いブラウザーもサポートしないといけない場面は実際の仕事ではよくあることなのではないでしょうか?


というわけで明日は @hakurai さんです!たぶん Haxe について書いてくれると思います!