一. 什么是单页面应用程序?
- 单页面应用程序是将所有功能局限在一个web页面中,仅在该页面初始化时加载对应的资源(HTML,JavaScript,CSS)。
- 单页面应用程序不会因为用户的操作而进行页面的加载和跳转。
- 单页面应用程序是利用JavaScript动态的切换实现页面和用户之间的交互行为。
二. SPA 的优点
- 良好的交互体验
- 单页面应用程序内容的改变不需要重新加载整个页面(这也意味着页面初始化的加载慢)。
- 获取数据可以直接通过 Ajax(Axios)获取。
- 没有页面之间的相互跳转,减少白屏的出现。
- 良好的前后端工作分离模式
- 前端只需要关注页面的渲染,更利于前端工程化的发展。
- 后端只需要关注API接口,更易于实现API接口的复用。
- 减轻服务器的压力
- 服务器只需要提供数据, 不负责页面的合成和逻辑,工作效率成倍上升。
三. SPA 的缺点
任何技术都是存在局限性的。
- 因为单页面应用程序不存在页面的跳转与加载,因此,页面的初始化加载相对而言很慢。
目前的解决方案:
-
路由懒加载 :延迟加载 、条件加载 、 可视化加载
控制页面向服务器发送请求的数量,按需加载。设置暂存器 -
代码压缩(去除注释.. eg:webpack的打包之类的)
-
CDN加速 ( 内容分发 )
在客户端与服务器之间建立多个暂存点,用户访问请求引导至暂存点,实现最优匹配(最近,负载最轻) -
网络传输压缩( Http内容压缩 )
Http协议中内容编码的一种,实现对内容的压缩、混淆、加密,提高传输效率,加强安全性
2.不利于SEO(各类搜索引擎对js支持远远不够,更不要说是Ajax异步操作了)
应用程序初始化loading ,然后通过AjAX获取内容,抓取工具不会等待异步完成之后再行抓取页面内容。无法准确的获取对应的词条。
目前的解决方案:
SSR服务器渲染(Server-Side Render)—— 服务器端直接渲染出HTML字符串模板,浏览器直接解析改模板显示页面,首屏不再依赖JavaScript渲染页面(CSR-客户端渲染)。