为什么绝大部分桌面网站没有采用单页应用 (SPA) 模式?

SEO 的问题完全可以通过「通用服务端渲染 (universal rendering)」(或者叫「同构渲染 (isomorphic rendering)」) 解决啊?即使应用了前端框架,比如知乎,仍然有很多页面是点开一个新页面并重新走服务器渲染的,这里面有什么门道吗?为什么不做成完全的单页?
关注者
250
被浏览
37793
从两方面回答。
SPA的优点是什么?减少资源重复请求,提升二级页面的打开速度,这一点对于移动3G这种弱网环境尤其有效,从而提升用户体验。
SPA的缺点是什么?不利于SEO,首屏打开速度更慢。同时,与业务模块之间的关联紧密,不好拆分。
关于优缺点各再补充一点。对于SPA,在前后端分离的情况下,路由的管理全部在前端代码内部控制,可控性和简便性相对更高,但是这个优势可以通过nodejs渲染等方案来弥补。对于一些后台管理应用,需要切换页面操作的场景下,用SPA来实现可能要做很多额外的工作,如监听路由的变化重置一些状态等。
所以,对于桌面网站,大都跑在网络环境较好的情况下,优势并不明显,而劣势却完全凸显。SSR可以部分解决问题,但是SSR性能并非最优,并且成本也不低。因此算不上最优解。而且很多桌面网站在SPA技术之前就已经搭建好了,相关的技术栈也成熟并够用,配合Gulp之类的也能很好解决工程化的问题。既然如此,又何必强上SPA呢?