
今は3大JavaScriptフレームワークとしてAngular/React/Vueが注目されている!
フレームワーク | 特徴 |
jQuery | ・れまでに作られたJavaScriptライブラリーの中で、一番利用されているライブラリー ・DOMノードの取得にCSSセレクターを導入し、イベントハンドラー、アニメーション、Ajaxコールを組み合わせることができる ・配布サイズが小さい、学習コストが低くい、オンラインヘルプがたくさんある ・構文が簡潔、拡張が容易 ・ネイディブAPIにオーバーヘッドが加わり、速度が低下する ・ブラウザー間の互換性が改善したため、以前より重要度が低下 |
React | ・MVC(Model-View-Controller)の「ビュー」に特化して、状態を保持するUIコンポーネントを簡単に作成できる ・想DOMを実装した最初期のライブラリーで、メモリ内の構造とページとの差異を演算することで、ページを効率的に更新できる ・小さい、効率がいい、高速、柔軟性が高い ・シンプルなコンポーネントモデル ・ドキュメントとオンラインリソースが充実しているが、新たな考え方と構文を学ぶ必要がある ・サーバーサイドでの描画も可能 ・ビルドツールが必要不可欠 ・モデルとコントローラーを提供するほかのライブラリーやフレームワークが必要になることがある |
AngularJS 1.x | ・開発者はGoogle ・MVCアプリケーションフレームワーク ・大企業が採用している人気のフレームワークだが、コードベースが大きい ・AngularのみでモダンWebアプリケーションが作れるが、他の選択肢に比べて学習コストが高い ・「標準の」MEANスタック(MongoDB、Express.JS、AngularJS、NodeJS)の一部なので、数多くの記事やチュートリアルが存在する ・Angular 2.xにアップグレードできない |
Angular 2.x | ・Angular 2.0は2016年9月にリリースされ、1.xから完全に書き直したため、互換性もない ・コンポーネントをベースにしたモジュール方式のモデルを導入 ・TypeScript(JavaScriptにコンパイルされる)で作られている ・モダンWebアプリケーションを構築できるが、競合する選択肢に比べて学習コストが高くコードベースが大きい |
Vue.js | ・ユーザーインターフェイスを作るための軽量で先進的なフレームワーク ・Reactのような仮想DOMを使ったビュー層がフレームワークの核でほかのライブラリーとの統合が可能 ・HTMLベースのテンプレート構文でDOMとインスタンスデータをバインドし モデル層は純粋なJavaScriptのオブジェクトで、データが変更されたときにビューを更新する ・導入が簡単で、レベルの高い開発者にも満足度が高いが、比較的新しいプロジェクトであり、更新を一人の開発者に頼っているためリスクはある ・依存オブジェクトが少なく、高性能だが、他の選択肢と比べて、リソースが少ない |
Lodash、Underscore | ・文字列、数値、配列などの基本的なネイティブオブジェクトのメソッドを補う機能的なJavaScriptユーティリティを数多く備えている ・小さくてシンプルでドキュメントが充実しているため簡単に学べる ・ほとんどのライブラリー、フレームワークと共存できる ・ビルトインオブジェクトを拡張しない ・クライアントとサーバーの両方で使える |
Backbone.js | ・サーバーサイドのフレームワークのMVC構造を、クライアントサイドで利用できるようにした初期のフレームワーク ・Backbone.jsはほかのプロジェクトと統合できるため、ライブラリーだと位置付けだが、フレームワークと考えている開発者が大半なのでは? ・小さく、軽量で、比較的単純でドキュメントがすばらしい ・データバインディングなどの機能を実装するためにはコンポーネントを追加する必要がある ・Trello、WordPress.com、LinkedIn、Grouponなど数多くのアプリケーションで採用 |
Ember.js | ・MVVM(Model-View-ViewModel)パターンに基づいて作られた独自性の強いフレームワーク ・単一のパッケージにテンプレート、データバインディング、ライブラリーを実装している ・設定より規約(convention-over-configuration)の考え方を採用している ・Ember.jsのみでクライアントサイドアプリケーションを構築できるが、配布サイズが大きく、学習コストが高い |
Knockout.js | 比較的古いMVVMフレームワークで、IE6までさかのぼって対応する、すばらしいブラウザーサポート 小さく軽量で、依存オブジェクトがない ドキュメントが充実している プロジェクトが大規模になると複雑になる可能性があり、開発速度が低下 |
コメント