jQueryソース分析ノート

1971 ワード

jQueryの趣旨はWrite Less,Do Moreです.JavaScriptの開発スタイルへの侵入性はYUIほど強くなく、もちろんDojoやYUIほど膨大ではありません.JavaScriptの日常的な開発作業を大幅に簡素化し、主にDOM要素の操作(名前Queryから分かる)である.もう1つの主な仕事は、各フロントエンド開発者が直面するブラウザの互換性です.jQueryはすべての主流ブラウザの大部分のバージョンに互換性があり、万悪のIE 6からFirefox、Chromeなどの現代ブラウザまで.コアに位置するコードのほんの一部を除いて,残りのjQueryは緩やかな関数であり,拡張性が強い.http://plugins.jquery.com何千ものjQueryプラグインがあり、必要な機能はほとんど対応するjQueryプラグインがあり、1つだけではありません.
jQueryコードのヘッダはLicense宣言です.GPLv 2とMITデュアルプロトコルを採用した.jQuery宣言の下にはもう一つのプロジェクトの宣言:Sizzleがあります.これはjQueryの著者らの別のオープンソースプロジェクトであり,MIT,BSD,GPLの下で発表された.独立したselector実装(pure-JavaScript CSS selector engine)であり、独立して使用できます.その圧縮バージョンは3 KB余りで、最も効率的なセレクタと呼ばれています.jQueryは1.3から従来のselectorの代わりにSizzleを用いて実現した.
JSコードには()と{}がたくさんあります.ここではVim読み取りを使用しています.%コマンドは一致する括弧をすばやく見つけることができるからです.
コード全体の構造と変数
jQueryのコードは全体的に匿名関数呼び出しです.
 
  
(function (window, undefined) {
// ...
})(window);

これは,グローバルオブジェクトの汚染を回避するとともに,実行コンテキストの管理を容易にするためである.このテクニックはJSコードでよく見られ、jQueryコードでもよく見られます.たとえば、jQueryと他のJSライブラリが同時に使用されている場合、$記号が使用されている可能性があります.$記号を使用するには、次の手順に従います.
 
  
(function ($) {
// $("...")... $
})(jQuery);

ここで本当のjQueryオブジェクトが伝わります.
次に、真の実装部分に入ります.まず、$、つまりjQueryオブジェクトの宣言です.その中で最も基本的な2つのメンバーも列挙されています.
 
  
var jQuery = (function() {
var jQuery = function(selector, context) {
//
return new jQuery.fn.init(selector, context, rootjQuery);
},
//
// fn , jQuery 。 JS
jQuery.fn = jQuery.prototype = {
};
// , 。 jQuery extend 。
jQuery.extend = jQuery.fn.extend = function() {
};
// ...
return jQuery;
})();

jQueryオブジェクトはコアオブジェクトであり、すべての$(...)得られたものはすべてjQueryオブジェクトであり,jQueryの下に直接実現されるUtility関数のほんの一部を除いて,ほとんどの関数はextend法でjQueryオブジェクトに加算される.