W3C中是這樣解釋a標(biāo)簽的:
標(biāo)簽定義超鏈接,用于從一張頁(yè)面鏈接到另一張頁(yè)面。
從一張頁(yè)面跳轉(zhuǎn)到另一張頁(yè)面,但從這里來(lái)說(shuō)就違背了多視圖的單頁(yè)Web應(yīng)用這個(gè)概念
通過(guò)a標(biāo)簽進(jìn)行跳轉(zhuǎn),頁(yè)面會(huì)被重新渲染,即相當(dāng)于重新打開(kāi)一個(gè)新的網(wǎng)頁(yè),體現(xiàn)為視覺(jué)上的“閃爍”(如果是本地的項(xiàng)目基本看不出來(lái))
router-link
組件支持用戶在具有路由功能的應(yīng)用中 (點(diǎn)擊) 導(dǎo)航。 通過(guò) to 屬性指定目標(biāo)地址,默認(rèn)渲染成帶有正確鏈接的 標(biāo)簽,可以通過(guò)配置 tag 屬性生成別的標(biāo)簽.。
通過(guò)router-link進(jìn)行跳轉(zhuǎn)不會(huì)跳轉(zhuǎn)到新的頁(yè)面,也不會(huì)重新渲染,它會(huì)選擇路由所指的組件進(jìn)行渲染,避免了重復(fù)渲染的“無(wú)用功”。
總結(jié):對(duì)比,router-link組件避免了不必要的重渲染,它只更新變化的部分從而減少DOM性能消耗
Vue的創(chuàng)新之處在于,它利用虛擬DOM的概念和diff算法實(shí)現(xiàn)了對(duì)頁(yè)面的"按需更新",
Vue-router很好地繼承了這一點(diǎn),重渲染是我們不希望看到的,因?yàn)闊o(wú)論跳轉(zhuǎn)到哪個(gè)頁(yè)面,只需要渲染一次就夠了。組件幫助我們實(shí)現(xiàn)了這個(gè)愿望
反觀標(biāo)簽,每次跳轉(zhuǎn)都得重渲染一次,在一個(gè)浩大的項(xiàng)目里,這多么可怕!我們的"渲染"做了許多"無(wú)用功",而且消耗了大量彌足珍貴的DOM性能!