1、SPA简介
SPA:单页面应用(Single Page Application)。通过动态重写当前页面来与用户交互,而非传统的从服务器重新加载整个新页面。这种方法使应用程序更像一个桌面应用程序。
优势:前后端职责分离,架构清晰:前端进行交互逻辑,后端负责数据处理。
劣势:初始加载脚本较大,首屏空白时间较长。
比起一般的简单页面,SPA 最大的问题,就是在初始化之时引入大量框架方案脚本,这导致脚本体积随着项目发展体积愈发增大。随着项目不断发展,页面不断增加,源源不断的第三方组件&工具库加入到Bundle里面。
通过一系列方案来提升缓存命中率,减少脚本请求次数。在网络环境较差的移动端,尽量减少请求时间意义很大。
2、性能优化
(1)快速启动-极大提升加载速度
快速启动应用,并行发起 Bundle 加载&拉取初始数据。相信大家已经发现了,SPA 初始化时候,不得不等待 bundle 返回并执行后,才会发起数据加载。由于在移动设备上(即便有缓存)bundle 加载极为耗时,我们可以充分利用这段时间将数据进行预加载。
(2)根据路由拆分-减少初始加载体积
仅在需要进入对应路由时,对应组件才会被加载进来。
(3)打包公共 Bundle-提高复用性&缓存命中率
(4)组件预加载-减少页面切换时间
当首屏加载完毕后,设备&网络处于空闲状态,可以对其他路由组件进行预加载,以便提升页面切换性能。
(5)按需打包工具库,降低 Bundle 体积
(6)降低首屏渲染时间,极大提升体验
可以将访问的页面index.html缓存起来,下次打开时候优先利用缓存,再发起请求更新缓存。这使得 SPA 应用几乎不需要额外时间便可加载应用首屏文档流。
3、SPA分析
(1)初次加载的速度
单页应用的第一页加载会比基于服务器的应用慢。这是因为首次加载必须先拿到框架和应用程序的代码,再在浏览器中呈现所需的视图。基于服务器的应用程序只需将所需的HTML推送到浏览器,从而减少了延迟和下载用时。
(2)加快页面加载速度
有一些方法可以加快单页应用的初次加载速度,比如采用多项缓存措施、需要时再加载某些模块(懒加载)。
(3)页面生命周期
单页应用在初始页面加载时被完全加载,然后页面区域被替换或更新为按需从服务器加载的新页面片段。为避免过度下载未使用的功能,单页应用通常会逐渐下载更多内容,如所需要的功能、页面的一小块,或者完整的一页。
4、传统的页面应用
传统的web应用中,浏览器只是作为展示层,路由、服务调用、页面跳转都是服务端来处理的。也就是MVC的架构都是放在后端的,只有V这一层,将页面通过网络发送到浏览器端,渲染给用户。重服务端。
领取专属 10元无门槛券
私享最新 技术干货