web-dev-qa-db-ja.com

プロトタイプVS jQuery-強みと弱み?

別の「Yet Another Js VS Js」スレッドを開きたくありません。

結局、PrototypeとjQueryはどちらもJSであり、ほぼ同じメソッドと機能を持ち、同一のタスクにはほぼ同じコード行が必要です。

実際のRich Internet Applicationの場合、real strengthsおよびPrototypeのweaknessesとは何ですかvs. jQuery?

64
Luca Filosofi

私は当初、Prototypeが新しいメソッドまたは変更されたメソッドで要素を拡張するというアイデアが好きでした。

しかし、これがbad thing(TM)である多くの理由を発見しました

他のライブラリは要素とメソッドの動作が「標準」であることを期待しているため、他のフレームワークやライブラリで「いい感じに再生」できることをPrototypeが保証できないことが主な理由です。また、Prototypeの機能により、Prototypeによって破損しているものが多数見つかる場合があります。

私が発見した最新の例は、JSONとstringifyを使用したPrototype screwingです。私はEasyXDMを使用していましたが、prototype.jsライブラリがロードされた場合には、単に動作しませんでした。 othersで使用されるフレームワークを書いていたため、ページのコンテンツを制御できなかったため、プロトタイプなどを保証するためにIFRAMEですべてを作成して実行する必要がありました。 .jsは、私がやろうとしていたことで大混乱を起こしませんでした。

...そのため、jQueryは、フレームワークがDOMとjavascriptの標準的な動作を自動的に台無しにする権利を持っているとは思わないので、勝手に勝ちます。あなたはこれらのことを制御する必要があります、Prototypeはこの制御の一部をあなたから奪います....

105
Graza

プロトタイプよりもjQueryを使用しています。理由については、このページの上部をご覧ください。

jqueryタグ付き質問531,752
タグ付き質問のプロトタイプ2,465
2014年9月22日、2011年12月14日jQueryに更新-135,641 /プロトタイプ-2,327

jQueryは非常に簡潔で簡潔なコードです。プロトタイプ私はもっと多くの詳細を見つけますが、多くの分野では機能的に同等です。ただし、開始に支援が必要な場合は、より大きなコミュニティが必要です。より多くのサポート、あなたが既にそこに答えてグーグルに簡単に答える同じ質問のより多く、そしてあなたがおそらく何かをするためにあなたがおそらく探しているコードが...すでに書かれています。

同じ理由で、コミュニティが大きくなればなるほど、コードが増えるほど、complexコードが増えます。これは、単純なものが作成され、多くの複雑な状況が解決されたことを意味します同様に、非常にリッチなアプリケーションを作成している場合、かなり複雑な質問や状況に遭遇する可能性があります...これを処理するのに役立つリソースが他にもあります。

繰り返しますが、同じコミュニティサイズの理由で、より大きなコミュニティがそれを精査していたため、フレームワークのより多くの欠陥が発見され、ギャップが埋められました。これは、問題に遭遇したとき、他の誰かがチャンスをつかむ可能性があり、フレームワークではできなかった何かにぶつかって詰まるのではなく、動き続けるための方法やオプションが追加されたことを意味します。

45
Nick Craver

現在、PrototypeからjQueryに移行するために、アプリケーションの大きなブロックを書き換えています。どうして?プラグイン、プラグイン、プラグイン、特にUIウィジェット。プロトタイプUI要素はかなり断片化され、非常に断片的ですが、jQueryには非常に豊富な "標準"要素 のセットがあります。

19
Mark

JQueryは、ページに派手な効果を簡単に追加できるように構築されました。 100%の成功を収めています。

アニメーションと時折のajax呼び出しを追加することは、通常、人々がJavascriptライブラリに必要とするものであり、JQueryには大きなコミュニティがあります。 JQueryのモットーは「輝きを追加し、邪魔にならないようにする」です。これは、開発者がしばしば必要とするものです。

それでも、Prototypeは他のほとんどのユースケースで優れています。クラスベースのOOP(コンストラクターの継承などの問題を一様に解決する)の安定したフレームワークと、データを扱うための一般的な使用の抽象化の優れたセットがあります。

13
fdreger

PrototypeよりもjQueryを選択した理由は次のとおりです。

  • 「もっと、もっと書く...」
  • jQueryコミュニティはより大きくなります(したがって、より多くのプラグインとリソース)
9
Mickel

私は両方を使用し、両方が好きです。それは本当にあなたのプロジェクトの要件に依存します。私には、2つの異なる要件のために、両方のプラットフォームが2つの異なる方向から来たようです。どちらも、プログラミングの問題を解決してWebサイト/アプリケーションをより速く、より良く構築する必要性から生まれました。

トリックの標準ツールボックスを使用してWebサイトを迅速に作成する場合、jqueryとそのライブラリは優れています。車輪を再発明する意味はありません。ただし、ツール/トリックが機能しておらず、特定のバージョンを持っているのはクライアントである場合に、ブラウザーの奇妙なバージョンの問題が発生します。通常、ブラウザのバージョンがリリース/更新されたときに発生します。そのため、そのjqueryライブラリファイルの新しいリリースを取得してすべてのサイトを更新する必要があります。つまり、コミュニティが既にこの問題に気づいて解決している場合です。私は自分でそれを理解する時間がないので、これは私の唯一の苦労です。それは頻繁には起こりませんが、起こります。

より複雑なWebプロジェクト(バックエンドAPIでサポートされているサイトのネットワークなど)で作業する場合、プロトタイプが素晴らしいと思います。サーバーサイドを最大限に活用しますOOコーディングし、Prototypeでも同じことができることを非常に嬉しく思いました。オーバーヘッド、DOMの拡張などについて人々が言っ​​ていることは聞いていますが、メジャーな問題(木材のノック)に遭遇したことはありません。 .each(function(){}、..)で同じ変数を同じように簡単に反復し、もう少し制御できる場合、多くの問題が発生します。

だから、それぞれに場所があり、あなた自身の薬を選ぶ必要があります。

のように、

6
Chris

どちらも「最高」ではありません。それはすべて依存しています。両方試して、どちらが好きか見てみましょう。私は個人的にease-of-useを使用しており、かなり高度で学習曲線が長いプロトタイプを使用しています。

ご覧ください:

プロトタイプとJQuery(Ajaxianで)

4
Sarfraz

jQueryは、CSS構文に基づくCSSスタイルのセレクターとフィルターを使用します。設計の観点から、これには多くの利点があります。私はCSSが非常に好きで、熟練しているので、jQueryは個人的には自分にぴったりだと感じています。総合的なコーディングエクスペリエンスがより快適で、CSSの大ファン/熟練者である構文を探している場合は、選択肢よりもjQueryを好むと言っても差し支えありません。私はPrototypeの基本的なコースを受講し、涙が止まりませんでした。 「jQueryの要点」を完了しましたLynda's CSSとの密接な関係のため、私は絶対に気に入っています。私は約10年間、Vanilla JavaScriptでプログラミングを行ってきましたが、常に非常に乾燥していることがわかりました。そして、私にとってはcode overkill(大金はあまりかかりません)です。それは長年にわたって私にとって非常に有用でしたが。これまで見てきたことから、jQueryはJavaScriptが初日から持っているべきものです。しかし、繰り返しますが、物事を改善するには多くの時間、テスト、および努力が必要です。そのため、jQueryが私に勝ちます。

3
Illuin

これは、jQueryとMooToolsについてのもう1つの興味深い記事です(MooToolsとPrototypeは、少なくともこの議論のコンテキスト内でほとんど交換可能です): http://jqueryvsmootools.com/

3
Alsciende

私はまだjQueryやPrototypeの経験がありません。そのうちの1つを学習し始め、ColdFusion開発者兼プロジェクトマネージャーとしてツールボックスに追加します。これについての私の意見は、業界の採用を反映しているため、最初に新参者が決定するものであり、私見は重要です。

周りをざっと見て、両方についていくつかのチュートリアルを読んだところ、それぞれが同じコア機能を提供しているようです。ただし、ジョブボードやその他のプロジェクトを見ると、jQueryは、使用できるスキルだけではなく、はるかに「需要」が高いようです。私にとって、jQueryは採用と需要があり、コミュニティのサポートとドキュメントがあればプラスになります。 Prototypeには何もありません。ある開発者が最初に調べたプロジェクトとして選択したため、プロジェクトが事前に存在するためにプロジェクトが必要かどうかを知るのは良いことです。

2
Clint

プロトタイプフレームワークとjqueryを使用しましたが、個人的には、jQuery cuzのnoConflict()が好きです。私はjsファイルでこのようなjq noConflictを使用することを好みます

(function($){

}(jQuery));

この方法では、jsファイルごとにjqueryセレクターとして$を使用します

1
janbee

すでに署名済みのマークされた正解をサブスクライブすることで、プロトタイプのようなフレームワークで見つけることができるユーティリティのほとんどを使用できるライブラリを共有することはできませんが、ネイティブオブジェクトを拡張しないという利点があります。結果として、プロジェクトで使用したい補完的なフレームワークをより柔軟に制御できるようになります。

UnderscoreはJavaScript用のユーティリティベルトライブラリであり、Prototype.js(またはRuby)で期待される多くの機能プログラミングサポートを提供しますが、組み込みのJavaScriptオブジェクトは一切拡張しません。 jQueryのTuxやBackbone.jsのサスペンダーと一緒に行くのが良いでしょう。

1
Lothre1

また、どちらか一方を使用することは少し誤ったジレンマであるという議論を提供できますか? jQueryの経験が豊富なので、jQueryがどれほど有益であり、アプリケーション開発がどれほど速くなるかを知っています。

ただし、特に必要のない場合は、ライブラリをまったく使用しないほうがエンドユーザーにとって有益な場合があることに注意することが重要です。大規模なアプリケーションには確かに役立ちますが、パフォーマンスへの影響を考慮すると、一般的なWebサイトでの使用には直観に反する場合があります。

ライブラリをダウンロードするために追加のHTTPリクエストが行われます。通常は縮小すると小さくなりますが、結果としてより多くの帯域幅が必要になります。これは、モバイルユーザーが実現する可能性のあるページの読み込み時間を遅くする可能性があります。

さらに、ロード時にライブラリはすぐにコードを実行してグローバルにアクセス可能な関数とオブジェクトを作成するため、より多くのメモリを消費します使用しない場合でも一部のライブラリは組み込みオブジェクトに関数とオブジェクトも追加しますプロトタイプ。これにより、メモリ使用量も増加します。

最後に、jQueryおよび他の多くのライブラリは、パフォーマンスへの影響を最小限に抑えるために頻繁に広範囲にテストされますが、作成するコードは量は減りますが、それ以外の場合よりも遅くなることがよくあります。基本的にそれらは同じですなので、生のJavaScriptでできるライブラリでできることはすべて覚えておいてください

0
Micah Henning