Skip to content

单页面应用 Single Page

什么是单页面应用?

也就是指我们的系统只加载一次页面,剩下的页面切换交给路由去处理。页面中的数据替换则是交给 JavaScript 和 Ajax 处理。这些操作处理中页面是不会进行刷新的。

在传统的模式中,如果是传统的前后端不分离,你每次修改页面中的数据基本上都要重新请求服务器资源,然后刷新整个页面进行重新渲染。在后来就是传统模式的前后端分离,可以通过 Ajax 获取数据,通过 JavaScript 给指定 DOM 进行替换内容。但是这种方式的页面切换时,也是会刷新整个页面的,而且一般都是通过 a 标签进行页面跳转,或者是 JavaScript 的 location.href 属性进行页面跳转。

刷新整个页面,使得页面所有元素进行重新渲染,这个是很消耗计算机性能开销的。路由的工作原理,基本上就是在一个页面内进行模块切换,把上一个模块在 DOM 移除,把新的模块在 DOM 中新增,就很类似 Vue 中的 v-if 指令。往后面的趋势基本上都是单页面应用了。

优点

  • 良好的交互体验,切换页面时是看不到页面刷新效果的,平时的刷新页面都会空白几秒,用户体验很差
  • 优秀的架构,前后端分离,前端负责界面的展示,后端负责数据的存储和计算
  • 资源加载的次数少,性能有很好的提升,基本上都是按需加载/替换内容

缺点

  • 不利于 SEO 优化,因为整个页面在 Vue 实例化之前只有一个 <div id="app"></div> 标签。基本上就是一个空白的页面
  • 单页面应用不能使用浏览器的前进后退,因为它本来就没有切换页面。页面切换需要建立自己的堆栈管理
  • 单页首次加载耗时会比较长,也就是会白屏一会,因为要把资源都加载进来。但是加载完毕之后的性能会大幅提升