参考资料(开课吧视频 第一集):http://t.kuick.cn/R5qE
传统技术(jsp php等)
服务端生成好界面后,反给前端 (数据的获取与html拼接在后端完成)
特点:服务端生成html
优点:?
缺点:?
SPA(vue等)
首次 客户端向服务端拿到骨架屏以及vue代码,浏览器执行vue相关代码
后续交互是前端向后端发送请求,拿到json数据 (组件懒加载的情况后续交互也会去拿相关组件代码)
特点:客户端生成html
优点:(参考资料:https://blog.csdn.net/qq_41546940/article/details/90613142)
良好的交互体验
前端进行的是局部的渲染,避免了不必要的跳转和重复的渲染。
前后端职责业分离(前端负责view,后端负责model),架构清晰
单页web应用可以和RESTful规约一起使用,通过REST API提供接口数据,并使用Ajax异步获取,这样有助于分离客户端和服务器的工作。
减轻服务器的压力
服务器只需要提供数据,不需要管前端的展示逻辑和页面合成,提高了 性能
SPA应用中服务器可以先将一份包含静态资源(HTML CSS JS等)的静荷数据(payload)发送给客户端,之后客户端只需要获取渲染页面或视图数据即可,
共用一套后端程序代码
不用修改后端程序代码就可以同时用于web界面、手机、平板灯多种客户端
缺点:
首屏加载慢(第一次获取html结构,然后还要根据js代码发送请求向后端要数据 至少跟后端要数据 与后端至少进行了两次html通讯 导致首屏加载慢)
SEO问题(首屏界面无太多真是文字内容,内容由js代码生成)
(参考资料:https://blog.csdn.net/qq_41546940/article/details/90613142)
SEO(搜索引擎优化)难度高
由于所有内容都在一个页面中进行动态的替换,也就是利用hash片段实现路由,而利用hash片段不会作为HTTP请求中的一部分发送给服务器,所以在SEO上有着天然的弱势
而SPA使用哈市片段的目的是;片段内容发送变化时,浏览器不会像URL发送变化时那样发送请求,这样就可以只请求页面或渲染所需的数据,而不是每一个页面获取并解析整份文档
首次加载时间过长
为实现单页Web应用功能及显示效果,需要在加载页面使将js、CSS统一加载,部分页面按需加载。
页面复杂都提高,复杂逻辑程度成倍
由于后端只提供数据而不再管前端的展示逻辑和页面合成,所以这些展示逻辑和页面合成都需要在前端进行编写(前进、后退等),所以会大大提高页面的复杂性和逻辑的难度
SSR
服务端解析vue语法生成html,反给前端 【后端将代码转化为SPA(?有疑问)】
特点:?
优点:相比较于SPA方案,SSR没有首屏加载慢问题 以及SEO问题
缺点:
开发条件受限(vue生命周期钩子不会执行【例如mounted钩子无法执行】、第三方库使用受限)
构建部署的要求多(渲染服务器必须为node)
服务端负载变大(每一次渲染都要构建vue实例)