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