公司新业务要实现前后端分离,大致结构就是这样:java/php——》node(koa)——》vue/react,请问有大神做过这种业务吗?求教?求指导!!主要是不明白koa的充当什么角色,接口转发吗?
java/php 作为底层数据层,做标准的 数据库表查询及功能接口。
node 作为中间层,功能很多。
- 根据针对业务场景,对同一前端界面的多次请求进行合并,统一发送给前端 =。=
- 可能会用到后端渲染,直接在 node 中渲染前端界面
其实后端如果给的格式符合前端要求 没必要koa。。如果给的结构不符合你的要求。。可以koa层用graphql做这样节约koa层的api结构设计和维护成本。
主要用于 BFF 层( Backend for FrontEnd / 粘合层),提供后端服务的聚合,还有前端视图渲染层的一些工程化配套。
为什么不能直接调用 php/java 的后端?
猜测应该是react做后端路由,java负责数据层接口开发,node做路由层以及数据处理,如果把react改成express模板开发,是比较常规的一种开发方式
学习了 自豪地采用 CNodeJS ionic
@rwing 跟语言关系不大,主要是要明确有这样的一个 BFF 层。
痛点:
- 后端服务一般会微服务,搞原子化。
- 用户侧(前端,客户端)则为了性能优化,要求后端返回的数据要聚合,要清洗。
- 所以在实际业务中,往往会遇到前后端争吵,某个接口是否需要对返回的数据进行定制化,或者是对某几个接口的合并处理。
- 后端追求稳定,发布周期较长,他们也不太 care 实际展示字段的几个小变更。
如何解决? BFF - Backend for Frontend,也可以理解为粘合层。
- 自己的狗粮自己吃,用户侧开发者(前端,客户端)自己需要的数据,在自己的粘合层解决,BFF 的代码也是他自己维护。
- BFF 可以用自己擅长的语言来实现,不一定非是 Node 什么的。
- GraphQL 也可以理解为这里面的一种解决方案。
- BFF 除了做数据的清洗组合外,往往还会配合用户侧的一些工程化方案,如我们这边之前做的 Pagelet 方案,就是需要在模板层读取构建好的前端资源依赖表,进行静态资源的请求优化,等等。
- 前后端的界限,以前是
JS/CSS ↔ View/Controller/Service/DB
,现在是JS/CSS/View/Controller ↔ Service/DB
@rwing 因为node在性能和高并发上有很好的优势,所以公司想使用node作为中间层
接口是PHP/java 提供的,那么 node 在前后端分离中充当什么角色呢,那就是路由和视图渲染,不过对于某些应用来说,完全可以用前端路由在做了,vue react都有对应的路由组件,所以这种情况下不也没node什么事了
又看了一遍,刷新个人理解!哈哈 From Noder