複数の AJAX ライブラリを使用するための最良の戦略は何ですか?
-
09-06-2019 - |
質問
複数の AJAX ライブラリの使用についてどのような経験を共有できますか?
Prototype には便利な機能があり、jQuery、Yahoo ライブラリなどにも便利な機能があります。すべてのライブラリを含めて、それぞれから必要なものを使用することは可能ですか、それらは通常、名前空間などとうまく連携しますか?速度を向上させるために、含めるライブラリのサイズや数に実質的な制限はありますか、それとも無視できるものですか?特にうまく連携するペアはありますか (例:Prototype/Scriptaculous) またはそうでないペア?
解決
これらのライブラリをすべて使用することもできますが、使用しないことを強くお勧めします。大量の JavaScript をダウンロードして実行すると、ブラウザが停止し、ユーザー エクスペリエンスが遅くなる可能性があります。ユーザーの観点からも開発者の観点からもどちらかを選択するほうがずっと良いでしょう。コンテキスト/アーキテクチャの切り替えが少なくなり、保守するコードも少なくなります。
他の回答が述べたように、ほとんどは矛盾しません。
Yahoo! を参照してください。 卓越したパフォーマンス 詳細については、サイトをご覧ください。
他のヒント
使用できます Google AJAX ライブラリ API。jQuery、プロトタイプ、script.aculo.us、MooTools、dojo に共通の配布ネットワークと読み込みアーキテクチャを提供します。
YUI は非常に厳密に名前空間が指定されているため、他のライブラリと衝突しないはずです。
前述したように、jQuery は競合なしモードで実行できます。
プロトタイプ する 次のようなコアオブジェクトを変更する(または以前は変更していた)ため、他のライブラリとの連携に問題がいくつかあります。 Array
. プロトセーフ それらの問題に対処しようとしています。
Script.aculo.us は単に Prototype の上に位置するウィジェット ライブラリなので、これら 2 つは明らかにうまく連携するはずです。
これらすべてが意味するのは、あなたが できた アプリケーションでは YUI、jQuery、Prototype、Script.aculo.us を使用しますが、単一のライブラリを使用すると保守がはるかに簡単になる場合があります。
私も jQuery 信者なので、他のものについては知識がないことをご容赦ください。
jQuery の優れた点は、非競合モードなので、たとえば次のようにします。
$('#foobar').whatever();
非競合モードでは、次のようになります。
var jq = jQuery.noConflict();
jq('#foobar').whatever();
心配することが一つ減りました。プロトタイプも同様の機能を提供しており、Yahoo も同様の機能を提供していると思います。
とにかく、私は jQuery をあまり推奨して人々を怒らせたくはありませんが、どのライブラリを選択しても、必要なことはほぼすべて実行できると思います。特に次の利点について考えてください。 ない 3 つの異なるライブラリを学習する必要があります。
3人とも有能なはずだ。最も気に入ったものを選択して拡張してください。:)
現在、プロジェクト内で jQuery と Microsoft ajax ツール キットの JavaScript ファイルのみのバージョンを並べて使用しています。
jQuery を使用して、最終的には Microsoft のものを削除することになると思います。私は jQuery を初めて使用しますが、学べば学ぶほどますます夢中になっていきます。
最善の戦略は、 複数のライブラリを使用しない. 。問題に対してさらに多くのライブラリを投入したくなる誘惑に駆られますが、それは非効率的でエラーが発生しやすく、他の人がコードを保守するのが難しくなります。
ほとんどの場合、問題の領域とその解決に最適なライブラリを理解することで、複数のライブラリの使用を回避できるはずです。これらすべてのライブラリには、無数のプラグインや拡張機能もあります。
たとえば、JQuery はクロスドメイン JSONP 呼び出しをそのままサポートしており、JQueryUI には優れたウィジェット ライブラリがありますが、Prototype にはありません。
$.getJSON('http://anothersite.com/mashup.json?callback=?', function(data) { });
Prototype は非常に優れた OO サポートを備えており、DOM を簡単にトラバースできますが、ウィジェットやマッシュアップの作成に必要なクロスドメイン機能の一部が欠けています。
var Foo = Class.create({
initialize: function(name) {
this.name = name;
}
});
var Bar = Class.create(Foo, {
initialize: function($super, name) {
$super(name);
}
});
Mootools には、優れた効果、優れた OO サポート、非常に堅牢なウィジェット、クロスドメインリクエストがありますが、(これは私の印象にすぎないかもしれませんが)、開発コミュニティは、他のコミュニティほど (mootools の外の) グローバル コミュニティと協力的かつ社交的ではありません。コミュニティ (プロトタイプは以前はこの方法でした)。これは、主な開発者が米国外に居住しているため、多くのカンファレンスに参加したり、より大きなコミュニティに参加したりできないことが原因である可能性があります。だからといって完全に思いとどまるわけではありませんが、心に留めておいてください。
Ruby on Rails は、プロトタイプと Scriptaculous の両方をデフォルトで使用します。これは、両者の間に重複がほとんどないためです。これに加えて yui スニペットも使用しましたが、問題が発生したことはありません。読み込み時間は問題ですが、ライブラリは通常キャッシュされるため、最初のページが読み込まれるだけです。