请教大神关于spa,前后端分离和ssr这样理解是否正确
发布于 6 年前 作者 mjt19930301 3207 次浏览 来自 问答

一、SPA 服务器接受请求时只负责返回路由规则和必要的js和html,然后浏览器根据网址对应的规则渲染相应的页面,这时,浏览器相当于手机,其中的代码相当于一个手机app 应用中的所有操作全部是浏览器中的js渲染执行的,所有的数据都是通过fetch操作获取,服务器只需要提供api服务就可以了,从而导致了前后端分离。 二、ssr Nextjs 的项目,所有的服务端渲染的数据都是通过getInitialProps生命周期中请求的,浏览器中运行时获取数据和spa请求数据一致。这样Nextjs中的服务器唯一的作用就是服务端的路由,所有的鉴权什么的操作全是在api服务器进行的?

7 回复

其实现在node服务端渲染主要解决的是首屏加载,优化seo的问题,而单纯的谈服务端渲染就和其他的后端语言没有差别了。

个人理解,ssr,把路由职责放回服务端(但是其实原理上还是通过spa的路由,如果你用的是spa模式开发,只不过提前放在后端而已),并且首屏加载会快,因为不必要第一次就把所有的前端代码都上传,个人认为ssr和前后端分离并不是完全相对的,因为,ssr也可以是包含绑定数据,比如传统php,然后只要使用了这种前后端分离的模式也就是理解为api模式,只用ssr是对seo没有多大作用的,因为你的数据和页面元素还是需要fetch后才得到,爬虫应该是不会去fetch那么厉害,前后端分离要seo优化,就是要用“虚拟”的一个机器人在服务端就把完整的fetch后的页面都做好,再呈现给爬虫。

@HobaiRiku 服务端缓存可以解决seo问题吧?

@zhangjianfang19910327 缓存的是把api数据全部都渲染完成后的文件就可以,只获呈递html和js,里面有很多元素还需要fetch或者ajax来渲染的,应该是不行的。最首先,ssr是seo的必须。

@HobaiRiku 服务端不能去拿数据么?

个人理解前后端分离除了开发分离,还有CI/CD,部署等一系列流程的分离,并不只是前端渲染就是前后端分离。 最早的jsp、php、asp都是服务端渲染,而今天的next、nuxt只是nodejs结合react、vue等js框架产生的服务端渲染的框架,都是为了解决SEO和首屏渲染而又要使用这些新生代框架而产生的。当然单页面的SEO还可以利用预渲染去解决。

回到顶部