需求
产品发展几个阶段,初期->中期,后期
- 初期: 规模小,需求迭代快
- 常见方案: 这个时期不会投入太多人力,所以这个时候方案选型,前后端不分离
- web框架+渲染模板: spring+模板, c#+模板, nest+模板
- ssr框架+弱api: next+api, nuxt+api
- 常见方案: 这个时期不会投入太多人力,所以这个时候方案选型,前后端不分离
- 中后期: 规模大: 人力多/难管理,前后端分离
- 常见方案:
- ssr 框架: next,nuxt
- 后端: midway,nest,java,c#,python…
- 常见方案:
痛点
明显前期和中后期的方案选型是有差异的,分离迁移的时候需要重构乃至重写原来的逻辑
理想
前期如果能够在一个项目中将ssr框架和强web框架松耦合,然后中后期分离只要稍作处理就能分离继续独立开发。(选型自由,不影响升级)
- 理论支持
- nodejs 是 io 多路复用,http 托管网络请求
- express, koa 提供了比较基础的 web 框架的能力,具有中间件等特点
- next,nuxt 则是在 express,koa基础之上封装了ssr+ssg+csr等能力
- egg,midway,nest 则是在 express,koa 基础之上封装了web api等能力
- 如果在request进来的时候通过中间件将响应分离,/api请求走web框架,其他走 ssr 框架。然后 ssr 框架的聚合结合也复用这个请求链路,获取 web框架的响应结果就行