バージョン 1.5 の最大のアップデートは、AJAX が完全に書き直され、スケーラビリティが向上しました。ただし、エネルギーとスペースの制約のため、新しい AJAX の分析は別の機会に延期され、この記事では詳細な改良点について簡単に紹介します。
jQuery._Deferred と jQuery.Deferred
まず最初に、これら 2 つの新しいものについて説明しなければなりません。これら 2 つはインフラストラクチャとして存在するため、これら 2 つが明確に説明されていないと、いくつかの問題を説明できません。全く。
まず、jQuery.Deferred は jQuery._Deferred の拡張バージョンであるため、この問題については、jQuery._Deferred から始めるとほとんどの問題が説明できます。
遅延とは何ですか?文字通り、私の最初の反応は「遅延ロード」でした。最初の大文字は「型」の定義であるはずなので、これはおそらく「遅延ロード機能を透過的に提供する」型です。ただし、実際には、多少の「遅延」の意味はありますが、これは遅延読み込みの実装には使用されません。
jQuery._Deferred は簡単に言うと関数キューで、その機能は次のとおりです。
いくつかの関数を保存します。
保存されたすべての関数を特定の時間に実行します。
実行後、新しい関数はすぐに実行されます。
何かに似た感じですか?はい、jQuery の ready 関数にはそのようなロジックが備わっています。実際、jQuery 1.5 のready 関数が実際に移植されています。
jQuery._Deferred は次のインターフェイスを提供します:
done: function(fn1, fn2, ...) の形式で、キューに関数を追加するために使用されます。
fire: function(context, args) の形式で、context を使用してこのオブジェクトを指定し、args を使用してパラメータを指定し、キュー内のすべての関数を呼び出します。 fire が呼び出された後、_Deferred は isResolved 状態になり、それ以降の Done の呼び出しでは関数は保存されず、関数が直接呼び出されます。
resolve: 簡略化されたメソッドである fire(this, argument) の呼び出しと同じです。
isResolved: _Deferred が isResolved 状態であるかどうかを判断するために使用されます。詳細については、前の fire 関数の説明を参照してください。
cancel: キュー全体をキャンセルします。これにより、今後発生するかどうかに関係なく、キュー内の関数が再度呼び出されなくなります。
jQuery._Deferred についてわかりやすく説明したので、jQuery.Deferred を見てみましょう。これは実際には 2 つの _Deferred で構成されています。1 つ目は deferred と呼ばれ、関数を「通常」状態で保存するために使用され、2 つ目は、failDeferred と呼ばれ、関数を「エラー」状態で保存するために使用されます。同時に、jQuery.Deferred はいくつかの新しいインターフェイスを提供します:
then: function(done, failed) の形式で、done を deferred に追加し、fail を failedDeferred に追加します。
fail:failDeferred の Done 関数と同等。
fireReject:failDeferred の fire 関数と同等。
reject:failDeferred の解決関数と同等。
isRejected:failDeferred の isResolved 関数と同等です。
同時に、jQuery.Deferred はキャンセル関数をキャンセルします。
それで、これは何に使われるのでしょうか? 「正常」と「エラー」の 2 つの状態があり、同時に非同期であることは簡単に考えられます。はい、AJAX で使用されます。詳しくは次の分析で説明します。
jQuery.ready の変更点
jQuery._Deferred により、jQuery.ready 関数は関数キューに依存するようになります。具体的な変更点は次のとおりです。元のreadyList変数は配列ではなくなり、jQuery._Deferredオブジェクトになります。
DOMContentLoaded のときに readList 内のすべての関数を呼び出す元のロジックが jQuery._Deferred でも使用されるようになりました。元のコード:
は次のようになります:
jQuery.parseXML 関数
ブラウザ互換のスレーブ文字を提供するための新しい静的関数 jQuery.parseXML を追加しました。文字列をXML文書に変換する関数。
この関数には多くのロジックがあり、jQuery に関して特別なことは何もありません。それらは大きく次の 2 つのタイプに分けられます。
標準ブラウザの場合は、DOMParser オブジェクトを使用します。
コードをコピーします
var xml =
data セクション
要素に jQuery によってアタッチされたデータがあるかどうかを判断するために使用される jQuery.hasData 関数が追加されました。
jQuery.expando の実装を変更しました。単に現在の時刻を取得するだけでなく、乱数が追加されました:
expando = "jQuery" ( jQuery.fn.jquery Math.random( ) ).replace( /D/g, "" ); これにより、複数の jQuery コピーが同時に導入され、これらのコピー間の展開が互いに競合して要素上のデータが乱れることがなくなります。基本的にはjQueryを複数導入することはありませんが、SealJSなどを利用する場合、設定が適切でないとこのような問題が発生しやすくなります。
DOM 操作部分
元の hasClass、addClass、removeClass 関数はすべて、要素のクラス属性を配列に分離する必要がありました。バージョン 1.4.4 では、それらは分離されました。 n or によって、1.5 で新しいものが追加されました。 、Windows プラットフォームの改行文字 (rn) に対応するために使用されます。
jQuery.fn.attr 関数は、バージョン 1.4.4 では TextNode および CommentNode からの属性の取得を拒否し、バージョン 1.5 では AttributeNode (noteType == 2) が追加されました。
バージョン 1.4.4 では、jQuery は、ページがアンロードされるときに、jQuery によって保持されているすべての DOM イベントをクリーンアップします。これは、IE のメモリ リークの問題を回避するためです。しかし、このコードは 1.5 で消えてしまいました。理由はわかりません。
IE で cloneNode を使用してノードをコピーする問題については、1.4.4 では innerHTML をコピーすることで解決していましたが、1.5 では mootools チームが提供した方法で解決しました。この問題を解決するには、cloneFixAttribute 関数を使用します。
cloneFixAttribute 関数は、jQuery 1.5 beta1 ソース コード ファイルの行 5388 ~ 5438 にあります。IE のバグに対処する原則は非常に単純です。もちろん、フロント エンドで一見単純に見えることのいくつかは困難です。 find:
IEにはclearAttributesという関数があり、ノード上のすべての属性をクリアします。 ちなみに、イベントに関係するonclickなどの属性も削除されます。コピーされたノードでこの関数を呼び出すと、属性がクリアされます。
IE には、あるノードの属性を別のノードにコピーする mergeAttributes という関数もありますが、イベントに関連する属性はコピーされません。したがって、元のノードで mergeAttributes を呼び出し、コピーされたノードに属性を戻します。これは、イベント関連の属性を削除することと同じです。
さらに、cloneFixAttribute 関数は cloneNode 上の IE6 ~ 8 の多くの互換性問題も処理します。これについては、詳細に検討する価値があります。
AJAX 部分
AJAX はバージョン 1.4.4 のスタイルを残して完全に書き直されました。ここでは、簡単に説明するために一部だけを抜粋します。
元のバージョンの $.get と $.post の実装は非常に似ており、具体的にはメソッド構成項目が 1 つだけ異なるため、バージョン 1.5 でマージされました:
$[method] = function() { ... });
ajaxSetup 関数は return this の行を追加します。連鎖的に呼ばれる。
serializeArray 関数は、値内の改行文字を Windows スタイル (rn) に均一に置き換えるようになりました。
AJAX コールバック関数では、パラメーターとして使用されるオブジェクトはネイティブの XMLHTTPRequest ではなくなり、jQuery 自体によってカプセル化された jXHR と呼ばれるオブジェクトが XMLHTTPRequest の共通インターフェイスを提供します。
元々、ブラウザーの「リクエスト成功」ステータス コードには 200 ~ 299 と 304 に加えて 1223 もあります。これは、204 ステータス コードを 1223 に変更する IE のバグに由来します。 jXHR オブジェクトがあるため、これは中間の追加レイヤーに相当するため、jXHR オブジェクトから取得される statusCode は 1223 として表示されず、204 に戻されます。
jQuery.ajax 関数の設定項目には追加の statusCode 項目があり、その構造は特定のステータス コードを返すときにコールバック関数を指定するために使用されます。
statusCode: {
200: function() {リクエストを正常に処理しました},
404: function() {処理中のページが見つかりません},
503: function() {サービスを処理しています利用できません}
}
})
このコールバックを追加すると、jQuery.ajax 関数にはすでに多くのコールバック関数が含まれています。トリガー プロセスは次のとおりです。
返されたステータス コードに基づいて成功またはエラーのコールバックをトリガーします。
ステータス コードに基づいて、対応する statusCode コールバックをトリガーします。
完了コールバックをトリガーします。
グローバル ajaxComplete コールバックをトリガーします。
現時点で実行中の AJAX がない場合は、グローバル ajaxStop コールバックをトリガーします。
その他の詳細
エントリ関数 jQuery.fn.init に追加パラメータが追加されました。値は常に rootjQuery です。これは、init 内の rootjQuery 変数の検索速度を高速化するために使用されます。関数 (効果ドメインのレイヤーを削減):
//jQuery 1.5 beta1 ソース コード 23 行目
jQuery = function( selector, context) {
// jQuery オブジェクトは実際には単なる init ですconstructor 'enhanced'
return new jQuery.fn.init( selector, context, rootjQuery );
}jQuery オブジェクトのサポートが継承されているのは、jQuery を直接呼び出すいくつかのコードをこれへの呼び出しに変更することです。コンストラクター:
202 行目: return this.constructor( context ).find( selector );
253 行目: var ret = this.constructor();
334 行目: return this.prevObject | | this.constructor(null) ;同時に、jQuery を継承する型を作成するための jQuery.subclass 関数も提供されています。jQuery はあまり一般的ではなく、jQuery を継承するために使用されたこともありません。この機能がどれほど便利であるかを言うのは不便です。

PythonとJavaScriptの主な違いは、タイプシステムとアプリケーションシナリオです。 1。Pythonは、科学的コンピューティングとデータ分析に適した動的タイプを使用します。 2。JavaScriptは弱いタイプを採用し、フロントエンドとフルスタックの開発で広く使用されています。この2つは、非同期プログラミングとパフォーマンスの最適化に独自の利点があり、選択する際にプロジェクトの要件に従って決定する必要があります。

PythonまたはJavaScriptを選択するかどうかは、プロジェクトの種類によって異なります。1)データサイエンスおよび自動化タスクのPythonを選択します。 2)フロントエンドとフルスタック開発のためにJavaScriptを選択します。 Pythonは、データ処理と自動化における強力なライブラリに好まれていますが、JavaScriptはWebインタラクションとフルスタック開発の利点に不可欠です。

PythonとJavaScriptにはそれぞれ独自の利点があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1. Pythonは、データサイエンスやバックエンド開発に適した簡潔な構文を備えた学習が簡単ですが、実行速度が遅くなっています。 2。JavaScriptはフロントエンド開発のいたるところにあり、強力な非同期プログラミング機能を備えています。 node.jsはフルスタックの開発に適していますが、構文は複雑でエラーが発生しやすい場合があります。

javascriptisnotbuiltoncorc;それは、解釈されていることを解釈しました。

JavaScriptは、フロントエンドおよびバックエンド開発に使用できます。フロントエンドは、DOM操作を介してユーザーエクスペリエンスを強化し、バックエンドはnode.jsを介してサーバータスクを処理することを処理します。 1.フロントエンドの例:Webページテキストのコンテンツを変更します。 2。バックエンドの例:node.jsサーバーを作成します。

PythonまたはJavaScriptの選択は、キャリア開発、学習曲線、エコシステムに基づいている必要があります。1)キャリア開発:Pythonはデータサイエンスとバックエンド開発に適していますが、JavaScriptはフロントエンドおよびフルスタック開発に適しています。 2)学習曲線:Python構文は簡潔で初心者に適しています。 JavaScriptの構文は柔軟です。 3)エコシステム:Pythonには豊富な科学コンピューティングライブラリがあり、JavaScriptには強力なフロントエンドフレームワークがあります。

JavaScriptフレームワークのパワーは、開発を簡素化し、ユーザーエクスペリエンスとアプリケーションのパフォーマンスを向上させることにあります。フレームワークを選択するときは、次のことを検討してください。1。プロジェクトのサイズと複雑さ、2。チームエクスペリエンス、3。エコシステムとコミュニティサポート。

はじめに私はあなたがそれを奇妙に思うかもしれないことを知っています、JavaScript、C、およびブラウザは正確に何をしなければなりませんか?彼らは無関係であるように見えますが、実際、彼らは現代のウェブ開発において非常に重要な役割を果たしています。今日は、これら3つの間の密接なつながりについて説明します。この記事を通して、JavaScriptがブラウザでどのように実行されるか、ブラウザエンジンでのCの役割、およびそれらが協力してWebページのレンダリングと相互作用を駆動する方法を学びます。私たちは皆、JavaScriptとブラウザの関係を知っています。 JavaScriptは、フロントエンド開発のコア言語です。ブラウザで直接実行され、Webページが鮮明で興味深いものになります。なぜJavascrを疑問に思ったことがありますか


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

ドリームウィーバー CS6
ビジュアル Web 開発ツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター
