单页面应用SPA总结

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这一层,将页面通过网络发送到浏览器端,渲染给用户。重服务端。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180721G0SCTA00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券