談到這個(gè)話題首先就要說(shuō)說(shuō)Vue的出現(xiàn),它并不是為了取代jQuery,可能接觸過(guò)Vue的朋友覺(jué)得Vue好用,入門(mén)簡(jiǎn)單,再看官方對(duì)它的定義是一個(gè)漸進(jìn)式框架,我對(duì)它的理解就是當(dāng)你需要什么的時(shí)候你可以往上加沒(méi)有什么硬性要求,像Vue、react之類的這些框架,都是把對(duì)DOM的操作轉(zhuǎn)移到了操作數(shù)據(jù)和組件上面,這類框架就像一個(gè)空殼子,然后可以不斷地往里面填東西,而熟悉jQuery的朋友可能還是會(huì)奉行jq至上的理念,可以實(shí)現(xiàn)一些Vue不能實(shí)現(xiàn)的功能。
而我認(rèn)為這兩者并不沖突,雖然在Vue里面加上jQuery的代碼整個(gè)項(xiàng)目會(huì)顯得比較亂但是如果是舊的項(xiàng)目,本來(lái)就大量依賴jQuery,那么重構(gòu)起來(lái)也比較麻煩,可以使用Vue實(shí)現(xiàn)一些新的功能,舊的jQuery部分讓其保留,而如果是新的技術(shù)選型為Vue的項(xiàng)目,那么肯定是能用Vue實(shí)現(xiàn)的就不去用jQuery盡量讓整個(gè)項(xiàng)目看起來(lái)比較舒服,并且如果直接用jQuery操作DOM,大概率會(huì)造成數(shù)據(jù)不匹配問(wèn)題,這時(shí)候就應(yīng)該了解下jQuery的側(cè)重點(diǎn)。如果使用jQuery來(lái)進(jìn)行數(shù)據(jù)請(qǐng)求和動(dòng)畫(huà)效果的實(shí)現(xiàn)和Vue就不會(huì)沖突而是較好的過(guò)渡。
舉個(gè)例子,假如有一個(gè)管理系統(tǒng)需要維護(hù),那么頁(yè)面上少不了大量的form請(qǐng)求和數(shù)據(jù)展示,當(dāng)用戶不斷操作改變頁(yè)面上內(nèi)容的時(shí)候,Vue的核心虛擬DOM不會(huì)立即操作DOM,而是將這些更新的diff內(nèi)容保存到本地一個(gè)JS對(duì)象中,最終將這個(gè)JS對(duì)象一次性attch到DOM樹(shù)上,再進(jìn)行后續(xù)操作,這樣的好處是不會(huì)對(duì)真實(shí)的DOM進(jìn)行太多操作,反觀jQuery,它的任何操作都是去直接操作真實(shí)DOM,第一次用戶操作改變了DOM結(jié)構(gòu)后,緊接著下一個(gè)DOM更新請(qǐng)求又來(lái)了,反復(fù)的計(jì)算操作DOM就是浪費(fèi)性能。所以在這種情況下如果要結(jié)合jQuery使用那么從性能方面考慮不妨讓 jQuery負(fù)責(zé)數(shù)據(jù)請(qǐng)求就好。