曾經,在那個 IE6 仍是主流瀏覽器的時代,爲了實現稍微複雜一點的功能,也須要不少代碼。若是要作到兼容主流瀏覽器,更需大費周章。當 jQuery 出現後,使用 jQuery 實現一樣的功能,咱們只需寫不多的代碼,而且兼容主流瀏覽器。因而,大部分網站都會使用 jQuery。
時過境遷,咱們到底需不須要 jQuery 呢?
認爲不須要 jQuery 的理由以下:
IE7 及更低版本的瀏覽器的市場份額已經低到忽略的地步。而用 IE8 及更高版本的瀏覽器的原生 API 來實現 jQuery 提供的功能並非很麻煩。好比:javascript
/* 選取元素 */ // IE8+ document.querySelectorAll(選擇器); // jQuery $(選擇器); /* Ajax */ // IE8+ var request = new XMLHttpRequest(); request.open('GET', '/my/url', true); request.onreadystatechange = function() { if (this.readyState === 4) { if (this.status >= 200 && this.status < 400) { // Success! var resp = this.responseText; } else { // Error :( } } }; request.send(); request = null; // jQuery $.ajax({ type: 'GET', url: '/my/url', success: function(resp) { }, error: function() { } }); /* 綁定事件 */ // IE8+ function addEventListener(el, eventName, handler) { if (el.addEventListener) { el.addEventListener(eventName, handler); } else { el.attachEvent('on' + eventName, function(){ handler.call(el); }); } } addEventListener(el, eventName, handler); // jQuery $(el).on(eventName, eventHandler);
用 jQuery 作頁面的交互的作法是,當數據改變時,選擇數據對應的 DOM,而後修改 DOM。若是 HTML 發生改變,如某元素的 id 改了, 而 jQuery 是經過 id 來找那元素的,那 jQuery 的代碼也須要修改。並且,若是頁面的數據與 DOM 的交互很複雜,用 jQuery 還滿麻煩的。在這些狀況下,用 MVVM 的框架是個不錯的選擇: MVVM 作頁面的交互的作法是,在 HTML 中,設置好了 DOM 與數據的關係。當數據改變時,框架會更新 DOM。
認爲須要 jQuery 的理由以下
jQuery 的有豐富的插件庫。
很多現代的框架依賴 jQuery,如 Bootstrap 的 JS 插件,Ember,Meteor JS。若是要用那些框架,就不得不用 jQuery。
用 jQuery 比用原生的 API 好學,好用,強大,簡潔, 還不須要考慮瀏覽器兼容性問題。
jQuery 的開發仍在繼續中。而且與時俱進的增長了一些新特性。好比,jQuery 3 增長容許用 for... of 來遍歷 jQuery 集合的 DOM 元素。如前端
var $inputs = $('input'); var i = 0; for(var input of $inputs) { input.id = 'input-' + i++; }前端學習裙:685910553
那麼,咱們到底需不須要 jQuery 呢? 其實仍是要根據具體項目來定。對我來講,對於通常的項目,我都會用 jQuery,畢竟 jQuery 大小不大,好比,jquery-3.0.0-beta1.min.js 在沒 gzip 壓縮前也就 86 KB。java