- 做者:陳大魚頭
- github: KRISACHAN
write less, do more -- John Resigjavascript
在2005年8月的某一天,有一位叫John Resig
的美(guo)人,在blog上連發3個栗子公開懟了Prototype
的Behaviour
的代碼冗長,在那以後沒多久就開源了風靡全球的利器JQuery,還兼容了IE5.5,解決了開發者兼容性處理的心頭大患,以後JQuery就一發不可收拾,很快就統一了整個瀏覽器世界...vue
隨着時代的發展、各個瀏覽器逐漸趨向統一以及node
的出現,興起了許多現代化的工具,例如:react
, vue
, angularjs
,webpack
,gulp
等能夠解放開發者雙手,加快開發效率的庫與框架;而且瀏覽器端的API也日漸完善,ES6改革性的出現,JQuery
的代替方案變得愈來愈多,也所以對JQuery
不滿甚至要徹底廢棄JQuery
的聲音也愈來愈多。java
JQuery
JQuery
已經到了暮年,該退出瀏覽器的舞臺....了嗎?node
不少人詬病JQuery
體積很大,佔用資源不少,可是讓咱們來看一下最新的JQuery.min.js
的大小。 react
事實上,最新的JQuery
壓縮完以後也就85KB,這點開銷,在現代設備中都不是什麼問題,移動設備4G甚至能夠達到數MB每秒,PC端就更不用說了,因此說JQuery體積多大,佔用多大資源這一條在通常狀況下是不成立的!jquery
有人說,
dom
操做太麻煩,仍是用MV**
框架直接操做數組來得快一些....webpack
如今github
已經移除了JQuery
的依賴,可是並無使用任何現代化框架,而是用原生JS
去進行了重構,我我的認爲,JQuery
被github
移除不能說明JQuery
不中用了,只能說明是瀏覽器端API以及ECMAScript
已經日漸完善了。git
對於常規的DOM增刪改查,在MV**
裏只須要操做數組,是比較方便,可是在JQuery
裏咱們也能夠用操做數據的思惟去實現,封裝好要處理的DOM結果,用觀察者模式去監聽數據源的變更從而更改DOM不同也能夠很快嘛?angularjs
一長串的鏈式調用,看着就很煩github
這鍋,JQuery
是不背的。。。由於這就是我的寫代碼能力的問題了。。。。具體代碼就不寫了,在下面兩節中你們本身判斷吧......
JQuery
在跨域中發揮的做用
現代化的先後端協做一般都會以跨域的方式進行,通常方式都是CORS
了,後端開好權限,按AJAX的方式去請求,真香~
可是,若是在一些不得已要用JSONP
的場合,例如第三方SDK使用,現代的框架處理起來就比較難受了,這裏用JQuery就很方便了
const getJSON = async () => {
try {
const res = await $.ajax({
url,
dataType: 'jsonp',
jsonp: 'cb',
});
} catch (error) {
// do something;
};
};
複製代碼
單純地用ES6
+ JQuery
也是能夠很好的完成任務
JQuery
在動畫處理上也發揮了很大的做用
雖然如今不少人寫動畫會用CSS3
的屬性,Web Animations API
或者JSON
去寫,可是若是要寫一些step的動畫,用JQuery也是很好的選擇
const step1 = () => $.when(
dom1.animate({
left,
top
}, delay),
dom2.animate({
width,
height
}, delay)
).promise();
const step2 = () => $.when(
dom1.animate({
left,
top
}, delay),
dom2.animate({
width,
height
}, delay)
).promise();
const move = async () => {
await step1();
dom1.delay(500);
await step2();
};
複製代碼
其實這樣也能夠把動畫寫得很好看
在我內心,
JQuery
永遠是個王者
我對技術沒有偏見,不論是JQuery
也好,原生JS
也好或者層出不窮的框架,都是工具,只要能好好的完成任務就是好技術。
隨着時代的發展,JQuery
的市場佔有率是愈來愈少,之後會不會徹底被拋棄,這我不知道。只是JQuery
表明的是一個時代,是瀏覽器發展的見證者,也是我心目中的王者,雖然我之後也頗有可能會徹底棄用它,可是它在我心目中的地位是不變的!
JQuery
,榮耀!