SPA(单页面应用程序)

192 阅读2分钟

一. 什么是单页面应用程序?

  1. 单页面应用程序是将所有功能局限在一个web页面中,仅在该页面初始化时加载对应的资源(HTML,JavaScript,CSS)。
  2. 单页面应用程序不会因为用户的操作而进行页面的加载和跳转。
  3. 单页面应用程序是利用JavaScript动态的切换实现页面和用户之间的交互行为。

二. SPA 的优点

  1. 良好的交互体验
  • 单页面应用程序内容的改变不需要重新加载整个页面(这也意味着页面初始化的加载慢)。
  • 获取数据可以直接通过 Ajax(Axios)获取。
  • 没有页面之间的相互跳转,减少白屏的出现。
  1. 良好的前后端工作分离模式
  • 前端只需要关注页面的渲染,更利于前端工程化的发展。
  • 后端只需要关注API接口,更易于实现API接口的复用。
  1. 减轻服务器的压力
  • 服务器只需要提供数据, 不负责页面的合成和逻辑,工作效率成倍上升。

三. SPA 的缺点

任何技术都是存在局限性的。

  1. 因为单页面应用程序不存在页面的跳转与加载,因此,页面的初始化加载相对而言很慢

目前的解决方案:

  • 路由懒加载延迟加载条件加载可视化加载
    控制页面向服务器发送请求的数量,按需加载。设置暂存器

  • 代码压缩(去除注释.. eg:webpack的打包之类的)

  • CDN加速 ( 内容分发 )
    在客户端与服务器之间建立多个暂存点,用户访问请求引导至暂存点,实现最优匹配(最近,负载最轻)

  • 网络传输压缩( Http内容压缩 )
    Http协议中内容编码的一种,实现对内容的压缩、混淆、加密,提高传输效率,加强安全性

2.不利于SEO(各类搜索引擎对js支持远远不够,更不要说是Ajax异步操作了)
应用程序初始化loading ,然后通过AjAX获取内容,抓取工具不会等待异步完成之后再行抓取页面内容。无法准确的获取对应的词条。

目前的解决方案:

SSR服务器渲染(Server-Side Render)—— 服务器端直接渲染出HTML字符串模板,浏览器直接解析改模板显示页面,首屏不再依赖JavaScript渲染页面(CSR-客户端渲染)。