- プロジェクト条件 ”これはAJAX、イベントハンドル用の強固なサポートを必要とするWebサイトかもしくはアプリケーションであるのか。それともエフェクトのライブラリはどうだろうか。”追加設定なしで提供された機能性の量とフレームワークをサポートするために必要なエクスペリエンスも考慮されるべきである。
- ブラウザサポート ほとんどのフレームワークはほとんどのブラウザをサポートとするのだが、"・・・ファインプリントにおいてはいくつか例外がある。特にMacのSafari上においてである。”
- フレームワークをサポートしている開発チームの強み 最善のフレームワークはデベロッパ達のコアチームによって保持される。これによってバグレポートと質疑応答により早いレスポンスとより強固なガイドラインとへの適用とテストがもたらされる。
- フレームワークの成熟度 ”なによりもまずフレームワークの成熟度が長寿、確かな基盤への約束を確実にするのです。成熟したフレームワークはもうベー タ版には含まれない・・・”コミュニティの繁栄とSubversionとCVSバージョンリポジトリへのサポートは成熟度が高い事の証拠である。
- パブリックアップデートとリリースの頻度 ”長期の遅延とリリースの延滞は将来のプロジェクトにおいてそのフレームワークを支持したくなくなる要因となる。その代わりにパブリックリリースがたくさんありすぎてもそれが不安定であり、集中性の欠如を表すということにもなる。"
- ドキュメンテーションの質 ドキュメンテーションは重要な差別化要因である。強固なドキュメンテーションにはAPI、ブック、チュートリアル、そしてブログが含まれている一方、”最悪なドキュメンテーションはシンタックスのみに重点が置かれたものである。”それぞれのメソッドとプロパティのサンプルもまた大変実用的である。
- アクティブコミュニティの存在 ”経験のあるユーザ達は快く手を貸すだろうか、それとも手を貸さず他をあたらせるだろうか。デベロッパ達は拡張機能を作り上げているだろうか、それとも中核のフレームワークに貢献しているだろうか?”コミュニティのキャラクターはコミュニティヘルプにおける将来の信頼性を予測するものである。
- ベンチマークテスト ベンチマークテストはフレームワークパフォーマンスアスペクトを一見するのに役立つ。それらの存在はまた品質の確実性とベストプラクティスの採用に対する約束を証明している。また”スピードの増加が少量のものでも、もしくはリリースサイクルの間のダウンロードサイズの減少は前向きな動きとして考えられ得る。"
- フレームワークの拡張性 ”プラグインサポートは絶対的にJavaScriptフレームワークにとってプラス要因なのだが、デベロッパは通常コアライブラリをトラブルシュートするのがいかに困難であるかを知りたいだけなのである。"
- APIスタイル "これは重要ですが複雑な問題です。この疑問は数知れないプロジェクトでいくつかのJavaScriptフレームワークを使用した後のデベロッパたちのために答えられたものである。簡潔さと接続性は見過ごしてはならない大変重要な機能です。”
- 機能的、ユニット両方のテストの拡張セットはあるのだろうか?Kanjax氏により投稿
- 商用サポートはあるのだろうか?
もしあなたのアプリケーションが高パフォーマンスを要するのであれば、これらのフレームワークには気をつけてください。プロトタイプ、jQueryは大規模なテーブルとグリッドを使用している時にひどく遅くなるのです。もう一人のコメンテーターはMootoolsにはPrototype、JQuery&Mootoolsをベンチマークしたページがあることを指摘している(source)。
私はとてもAjax重視の今現在取り掛かっているプロジェクトにおいて拡張ベンチマークを行いました。また私は中核となる大規模テーブルで使用するでしょう。
私はjQueryとプロトタイプ両方を実験しましたがパフォーマンスはいつも欠如していました。問題?document.getElementById (). DOMルックアップはとても重いのです。実のところ私達のテストはDOMルックアップがハッシングを通して行われていないことを提示しているようです。
これらのたくさんのフレームワークはパフォーマンスを遅くさせ、あなたが必要としない拡張を頻繁に付加します。私達のソリューションは、それが行っている全ての拡張と外部からのフレームワークサポートなしで何が行われているかを研究する事と、独自のコードを書くことなのです。
大規模なテーブルを伴わない小さなWebページにはPrototypeかもしくはjQueryはとても実用的です。
原文はこちらです:http://www.infoq.com/news/2007/12/choosing-javascript-frameworks