首先,不是我要吹jquery有多好。是確實比較好,好在有許多地方值得每一個jscripter學習借鑒。
1,write less do more
簡練而強大是jQuery的核心競爭力。
簡練好處多多,更何況js這種客戶端語言。
Less Code == [Less Bugs,Better Readability,Less programmers to hire, Less organizational communication costs, Less maitain cost]
做到簡練已經相當不易,簡練而強大對任何程序員必定會產生致命的吸引力。
無論是jQuery的源代碼實現,plugin擴展,還是API應用,無處不體現著簡練而強大的魅力。
例如:
面向集合的隱式迭代:$("span").hide(); //hide all selected span elements
通過chaining函數來inline代碼:$("span").dothis().dothat().find().doforAllSub().end().dolast()
定義一個函數名,內部實現多種功能:強大的jquery構造函數。
2,豐富靈活的插件機制
有見識的人只選擇最合適的,而不選擇最豐富的。很多東西雖然很好很強大,但仍然不受寵就是因為那些不需要的東西綁定太緊密。
jquery把非必要的東西全部分割出來,根據需要來通過plugin擴展自己。
另外,很多優秀的插件的代碼風格非常值得學習借鑒。例如:
(function($) {
$.fn.myPlugin = function(settings) {
var config = {'foo': 'bar'};
if (settings) $.extend(config, settings);
this.each(function() {
// element-specific code here
});
return this;
};
})(jQuery);
通過匿名函數的執行來擴展jQuery,內部用縮寫$來簡化代碼,充分利用閉包特性,封裝實現,暴露接口,通過options來實現靈活配置,面向集合實現,chaining風格的實現。
3,selector
與其他同類庫相比,jquery的selector更加強大,特別是CSS selector, 結合各種filter可以極大簡化應用中的實現。
4,跨瀏覽器實現
這最后一點雖然不是最出眾的,但也是必須的。要知道,無數web developer的大好年華有50%以上花費在處理各種IE的兼容性上。