




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第到底該拋不拋棄JQuery目錄前言不用jQuery用什么?DOM與事件AJAX請求總結
前言
我以前很喜歡jQuery,而且說實話,我是先學jQuery,再學JavaScript的。所以我寫這篇文章有點像是在背叛jQuery。
我知道,關于為什么不應該用jQuery的文章已經(jīng)汗牛充棟,但我只是想說下自己的親身體驗。
不用jQuery用什么?
隨著web的發(fā)展,新技術長江后浪推前浪,前浪死在沙灘上。就像有些編程語言曾經(jīng)輝煌過,現(xiàn)在也消失不見了。我認為jQuery也不例外,是時候跟它說再見了,雖然它曾經(jīng)給我們帶來過美妙的編程體驗。
為什么要放棄jQuery呢?因為有Vue??!如果你看過我之前的文章,你應該能猜到我是Vue.js粉。Vue.js提供了非常多的工具,我敢說它比jQuery方便多了。
DOM與事件
讓我們來看一個點擊事件的例子。
請注意,我省略掉了框架的初始化部分
一個VueSFC(別慌,意思就是SingleFileComponent,單文件組件):
template
button@click="handleClick"點我,用力/button
/template
script
exportdefault{
methods:{
handleClick(){
alert('老鐵,你點擊了按鈕');
/script
用jQuery是這樣寫的:
buttonid="myButton"點吧/button
script
$('button#myButton').click({
alert('這次用jQuery');
/script
你可能會覺得Vue.js的代碼更多啊,你說的沒錯,但也不對!Vue.js并不是有更多代碼,實際上除了handleClick(){...}之外的部分只是框架的結構,跟其他行為是共用的。我覺得Vue.js看起來更整潔,代碼可讀性更高。
你心里可能還有一個疑問,你還是用了Vue.js啊,五十步笑百步?有本事別用!實際上你完全可以用原生JavaScript實現(xiàn):
buttonid="myButton"來點我呀/button
script
document.getElementById('myButton').addEventListener('click',function(){
alert('來自原生js的問候');
/script
所以你看,jQuery只是背著我們把代碼翻譯成原生JavaScript而已,假裝自己很特別。
至于DOM元素的選擇操作,用原生JavaScript可以輕松做到:
document.getElementById('myButton');//jQuery=$('#myButton');
document.getElementsByClassName('a');//jQuery=$('.a');
document.querySelectorAll('.parent.a');//jQuery=$('.parent.a');
AJAX請求
jQuery被用得最多的方面可能就是AJAX了。
我們都知道jQuery提供了$.ajax(),也可以分別用具體的$.post()和$.get()。這些API可以幫你發(fā)送AJAX請求,獲取結果等等。
你可以用原生JavaScript的兩個方法,那就是XMLHttpRequest和fetch。
XMLHttpRequest也算是個老古董了,跟fetch相比還不太一樣。
fetch更加時新,也比XMLHttpRequest更常用,而且是基于promise的。
fetch默認不發(fā)送cookies,并且如果HTTP狀態(tài)碼返回錯誤碼,比如404或500,它不會reject,因此基本上.catch()不會運行,而是response.ok變成false。
在這里就不詳細對比它們了。
我們還是來看兩段代碼。
這是jQuery:
$.ajax({
method:"POST",
url:"http://localhost/api",
data:{name:"Adnan",country:"Iran"}
}).done(response=console.log(response))
.fail(()=console.log('error'));
示例代碼來自jQuery官方文檔
這是fetch:
fetch(
'http://localhost/api',
method:'POST'
body:{name:"Adnan",country:"Iran"}
).then(response=console.log(response));
兩段代碼做的事情是一樣的,但fetch不屬于任何庫。
請注意,fetch也可以跟async/await結合使用,如下所示:
asyncfunctiongetData(){
letresponse=awaitfetch('http://localhost/api'{
method:'POST'
body:{name:"Adnan",country:"Iran"}
returnresponse;
}
那我自己用fecth嗎?實際上沒有,因為我不太信任它,原因有很多。因此我在用一個叫axios的庫,也是基于promise的,同時非常可靠。
上面的代碼用axios寫是這樣的:
axios({
method:'POST',
url:'http://localhost/api',
data:{name:"Adnan",country:"Iran"}
}).then(response=console.log(response))
.catch(err=console.log(err));
axios也可以跟async/await結合使用:
asyncfunctiongetData(){
letresponse=awaitaxios.post('http://localhost/api'{
name:"Adnan",
country:"Iran"
returnresponse;
}
總結
我現(xiàn)在自已經(jīng)不再用jQuery了,盡管我曾經(jīng)非常喜歡它,那個時候項目初始化后的第一件事就是安裝jQuery。
我相信我們
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 南寧市馬山縣招聘外聘工作人員考試真題2024
- 基礎設備維護管理制度
- 網(wǎng)絡應用的安全評估與改進試題及答案
- 公路工程的提升潛力與分析試題及答案
- 遞歸測試的實際應用與技術分析試題及答案
- 企業(yè)管理服務咨詢服務簡單合同(5篇)
- 行政組織理論對社會發(fā)展的貢獻試題及答案
- 汽車行業(yè)產(chǎn)品設計與制造工藝試題
- 大棚建設勞務承包合同
- 音樂藝術史考試題庫概覽
- 后現(xiàn)代思潮與教育
- 四川省樹德中學2025年高三第一次模擬考試(物理試題含解析)
- 售電合同協(xié)議
- 教師家訪制度與實施策略全面解析
- 中原農(nóng)業(yè)保險招聘題
- 2025八省適應性考試語文的3道作文題深度解析和寫作指導(真題+審題立意+標題+范文)【技法精研】高考語文議論文寫作
- 輸血科生物安全培訓課件
- 100以內(nèi)加法減法口算1000題知識練習打印
- 2025年湖南長沙穗城軌道交通限公司社會招聘261人高頻重點模擬試卷提升(共500題附帶答案詳解)
- 應急藥品知識培訓課件
- 差分進化算法研究
評論
0/150
提交評論