前后端分离,404/500页面如何渲染?
发布于 7 年前 作者 qingmingsang 6039 次浏览 来自 问答

我想到几种思路: 第一种是前端渲染,通过router进行跳转,但是无法感知api的情况。 第二种是nginx配置。 第三种是后端渲染。

第二第三种的问题是如何识别前端路由呢?

14 回复

前后端如果是分离那肯定是前端去做,后端只负责api

按照我之前做过的前后端分离方案,前端koa2+一堆前端技术,后端随便什么语言都行,只是提供API。koa2本身就是一个服务,只不过承载了前端资源。这种情况下第二和第三种方案就很容易实现了,koa2本身也可以抛出40x和50x,然后nginx稍微配置一下就行。第三种方案,服务端渲染,其实不是让纯后端去渲染,而是让koa2去渲染。

404路由错误,500后端错误… 都出bug了,还渲染啥,没有太大意义啊… 如果真要渲染,第二种方案,考虑nginx做重定向

服务器端渲染就这么不招人待见,根本没必要一味的SPA

前后端分离,后端基本不需要处理 view 了。基本都是第一种方案。

前后端分离不是说一定要前端渲染,而是将渲染任务交给前端负责,前端可以选择用Node做服务端渲染,如React ssr, vue ssr.这样还可以解决SPA的SEO,首屏渲染效率问题

@nullcc 我现在的方案也是这样的,但是在前端已经用了router(react-router)了,前端挂载服务如何继续挂载router

@kidbai 恩恩,确实只考虑前端渲染也是一种思路。

@laoqiren 我现在的方案也是这样的,但是在前端已经用了router(react-router)了,前端挂载服务如何继续挂载router

@jinwyp 在前端已经用了router(react-router)的情况下,前端挂载服务如何继续挂载router呢?现在的前端挂载服务只是输出一个index.html文件

@qingmingsang 建议你看看新浪微博是怎么做的。 把整个网站全部做成SPA是非常傻的一种做法。一般来讲 spa只做某一个业务。

例如举个最简单例子,业务不复杂。 不需要的登录的做成一个spa,需要登录的做成一个spa。 或者需要登录的按照业务做成不同的spa,就像微博那样。 例如只把用户中心做成spa而不是把整个网站只做成一个spa。

还有一个技术问题,后端可以直接用url forward,例如/spa/xxxx 然后前端路由来处理/spa/ 前缀的不同页面

@jinwyp 我现在是nginx来处理前后端不同的资源,nginx识别/api/xxx这样的路径为后端请求,有点类似你的想法。但是我现在前端是只是输出一个html文件,就是任何除了/api/开头的路径都是靠的router本身识别的,也就是并不能识别404后的重定向。感觉还是我前端服务有问题

@qingmingsang 可以看我的项目,React-router + redux + react ssr + mongo,服务端渲染项目: isomorphic-redux-CNode

回到顶部