背景知识
- HTML,js,css都位于服务器上
- 浏览器缓存机制:用户第二次访问某个页面,浏览器需要根据HTML加载css/js资源,但不是从服务器上加载,而是从浏览器缓存中(上次用户访问时,浏览器做了css/js的资源备份)
下列比较中,都假设用户是第一次访问某个页面(A/B),以排除浏览器缓存机制的干扰
多页面应用
- URL用于浏览器向服务器请求相应资源。不同URL返回不同HTML。
- 浏览器清空A页面,根据刚返回的HTML内容下载相应js/css资源渲染B页面。
- 即使A与B页面存在公共资源(导航栏等),这些公共资源也会被清空,重新下载。
- 用<a href="xxx"></a>来实现页面跳转
单页面应用
- URL用于浏览器向服务器请求相应资源,但不同URL返回同一个HTML(shell HTML),但该HTML内容有更新
- 浏览器不清空A页面,只是下载B页面所需的js/css资源(代码分片)
- 如果A与B页面存在公共资源(导航栏等),这些公共资源不会被重复下载。
刷新网页,访问http://localhost:3000,在浏览器的网络工具中可以看到下载了三个文件,分别是common.bundle.、bundle.和home.chunk.js,其中home.chunk.j就是特定于Home的分片文件,当我们通过点击顶栏的About链接时,可以看到只有一个新下载的文件about.chunk扣 - 用<route />来实现页面更新
- 实现原理