web-dev-qa-db-ja.com

Angular.jsBackbone.jsおよびその他のMV *パターン化されたjsライブラリ?

私はWebアプリケーション、より具体的にはこのMV*patternの初心者です。私たちはWebアプリケーションを作成しており、jQueryから完全に離れることを考えていますが、MVC、MVVM、またはMVPをサポートするクライアント側言語を実装しようとしています。基本的に、ビューをモデルから分離するもの。このMV*パターンに慣れていないので、私は偶然見つけました このサイト

基本的に、このMV*パターンをサポートするすべてのクライアント側の言語/フレームワークが(ほぼ!)リストされており、訪問した後、私は本当に混乱しています。このサイトによると..

結局のところ、Ember.jsは私が望むすべてを備えた唯一のフレームワークです。私は最近、比較的小さなBackbone.jsアプリケーションをEmber.jsに移植しました。パフォーマンスの小さな問題はいくつかありますが、結果として得られるコードベースには非常に満足しています。イェフダカッツに支持されているEmber.js周辺のコミュニティも素晴らしいです。これは間違いなく注意すべきフレームワークです。

しかし、SOで this を見つけたので、angularの方がはるかに優れていると思いますが、SOでも、- this 、および this これは、私が探しているもののバックボーンである可能性があると私に思わせます。

さらに悪いことに、テストはまったく異なる結果を示しています。ここに

http://jsfiddle.net/HusVw/1/Backbone clear winner

http://jsfiddle.net/ericf/NrpcQ/Backbone winner again

http://jsperf.com/angular-vs-knockout-vs-extjs-vs-backbone/2angular winner for less data for more its knockout

http://jsperf.com/knockout-js-vs-direct-dom-manipulation/Backbone again

http://jsperf.com/angular-vs-knockout-vs-ember/no way its ember as the site mentioned

だから、基本的にこれはすべて私を完全に混乱させます、私はウェブの名前で何を学ぶべきか、そして私はサイトに何を実装すべきかを決めることができません。テストと同様に、Backboneは明らかに目立ちますが、knockoutについてはよく耳にしますが、SOリンクはangularについて述べていますか?現在開発しているアプリケーションに依存している可能性があります。 、しかし私はより広い視野が欲しいのですが、このプロジェクトだけでなく、より長期的に役立つものは何ですか?その場合、どのフレームワークを好むのですか?またはそれらすべてを学ぶ必要がありますか?(jk、実際にはできませんもっともらしい時間にそれ。)

物事をもっとf ****にするために、私は Dart について聞いた、そして wiki は言う。

Dartの目標は、「最終的には、オープンWebプラットフォームでのWeb開発の共通語としてJavaScriptを置き換えること」です。

では、jsが置き換えられるのであれば、なぜこれらのjsライブラリ/フレームワークの学習を検討しているのでしょうか。

それで、基本的に、それはすべて台無しにされて、私は完全に混乱していますか?誰かが私が決めるのを手伝ってくれませんか?

30
Razort4x

おそらく客観的な答えはありませんが、これが私の2セントです。

バックボーンは通常、保守がより困難なはるかに大きなコードベースにつながります。リンクの逸話と同様に、コードがBackboneの2500行からAngularの600行に縮小された1つのプロジェクトに取り組んできました。ノックアウトはおそらく同じくらい小さい(=良い)結果をもたらしたでしょう。私の同僚はバックボーンからノックアウトに移り、その後ずっと幸せになりました。

バックボーンの利点は、それが本当に軽量であり、物事を構造化するためのより多くのオプションを提供することです。つまり、より多くのパフォーマンスチューニングを実行できるため、より高速になります。それらの非常に同じ側面もその欠点です:あなたは自分で物事を構造化する必要がありますこれはより多くのコード、より複雑で潜在的により多くのバグを意味します。

あなたが言及するテストに関して:それらは1つの非常に特定のユースケースを強調しているため、ほとんど客観的ではありません。また、Backboneの作者自身が投稿したものなので、明らかにBackboneをよく示しています。通常のUIの場合、3つ(バックボーン、Angular、ノックアウト)のどれを選択しても、パフォーマンスは問題になりません。 Angularの1つの注意点:ページに2000を超える要素を動的に表示する場合は、問題が発生する可能性があります(Angularの作成者自身の回答を参照してください: AngularJSでのデータバインディングはどのように機能しますか? )。

Dartについて:その目標は、言語内のMV *フレームワークだけでなく、言語になることです。これはまったく別の獣であり、MV *フレームワークが必要なだけの場合、ダートはやり過ぎでしょう。また、Dartはまだ非常に若く、ほとんどのブラウザでネイティブにサポートされていません。

26
Martin S.

さて、まず第一に、この質問に対する「良い」答えは実際にはありません。作成者に尋ねれば、すべてのMVCライブラリは優れています:pとはいえ、単純なTO-DOに必要なコードの量を確認できるように、 TODO-MVC の例を読み始めることをお勧めします。 Webアプリケーション、およびその複雑さ。次に、何を喜んで受け入れるかを自分で決めます。私の個人的な推奨事項はバックボーンです。また、たとえば Backbone Nested のように、(ほぼ)魔法のようなことを行う補完的なライブラリがいくつかあります。

幸運を!

3
alexandernst