背景知識(shí)
- HTML,js,css都位于服務(wù)器上
- 瀏覽器緩存機(jī)制:用戶第二次訪問(wèn)某個(gè)頁(yè)面愿待,瀏覽器需要根據(jù)HTML加載css/js資源,但不是從服務(wù)器上加載拉盾,而是從瀏覽器緩存中(上次用戶訪問(wèn)時(shí),瀏覽器做了css/js的資源備份)
下列比較中桨菜,都假設(shè)用戶是第一次訪問(wèn)某個(gè)頁(yè)面(A/B),以排除瀏覽器緩存機(jī)制的干擾
多頁(yè)面應(yīng)用
- URL用于瀏覽器向服務(wù)器請(qǐng)求相應(yīng)資源捉偏。不同URL返回不同HTML倒得。
- 瀏覽器清空A頁(yè)面,根據(jù)剛返回的HTML內(nèi)容下載相應(yīng)js/css資源渲染B頁(yè)面夭禽。
- 即使A與B頁(yè)面存在公共資源(導(dǎo)航欄等)霞掺,這些公共資源也會(huì)被清空,重新下載讹躯。
- 用<a href="xxx"></a>來(lái)實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)
單頁(yè)面應(yīng)用
- URL用于瀏覽器向服務(wù)器請(qǐng)求相應(yīng)資源菩彬,但不同URL返回同一個(gè)HTML(shell HTML),但該HTML內(nèi)容有更新
- 瀏覽器不清空A頁(yè)面潮梯,只是下載B頁(yè)面所需的js/css資源(代碼分片)
- 如果A與B頁(yè)面存在公共資源(導(dǎo)航欄等)骗灶,這些公共資源不會(huì)被重復(fù)下載。
刷新網(wǎng)頁(yè)秉馏,訪問(wèn)http://localhost:3000耙旦,在瀏覽器的網(wǎng)絡(luò)工具中可以看到下載了三個(gè)文件,分別是common.bundle.萝究、bundle.和home.chunk.js免都,其中home.chunk.j就是特定于Home的分片文件,當(dāng)我們通過(guò)點(diǎn)擊頂欄的About鏈接時(shí)帆竹,可以看到只有一個(gè)新下載的文件about.chunk扣 - 用<route />來(lái)實(shí)現(xiàn)頁(yè)面更新
- 實(shí)現(xiàn)原理