前后端分离,用node做中间层,进行接口转发和数据聚合有什么优势? - 图2

前后端分离,用node做中间层,进行接口转发和数据聚合有什么优势? - 图3
前后端分离,用node做中间层,进行接口转发和数据聚合有什么优势? - 图4

优势:

1.业务驱动

Node有个突出的优势,他的开发者可以是前端。
前端对于页面所需要的数据有更好的理解,每个页面要用到哪些接口,每个接口要用到哪些字段前端是最清楚的。再加上实际业务开发中,前端页面需求经常会发生变化,需要修改字段或者数据结构,所以对接页面的这部分接口由前端直接开发非常合适,可以显著的减少沟通成本。

2架构需要

面向用户的接口由Node中间层负责以后,真正的服务端可以专注于提供基于领域模型的对内接口,做微服务。
比如可以基于Goods模型,提供所有商品相关的接口;基于Users模型,提供所有用户相关接口。当一个接口需要商品+用户信息时,由Node分别查询组装。从整体业务代码维护角度来说,变得更容易,不会因为业务发展使得每个接口都异常繁杂。

3性能满足

如果仅仅是架构层面的需求,需要有一个中间层来沉淀业务,那用Java,PHP也可以做到,为什么说Node更适合做呢?
因为Node天生异步!
众所周知,js是一门单线程语言,所以Node在实现的时候,需要借助libuv来实现异步。
前后端分离,用node做中间层,进行接口转发和数据聚合有什么优势? - 图5前后端分离,用node做中间层,进行接口转发和数据聚合有什么优势? - 图6
如图所示,libuv为Node提供了线程池,事件池,异步I/O等能力。正是因为其中网络I/O的异步能力,可以让Node做接口聚合时,能够更高效的异步并发处理

4.成本较低

Node使用js开发,只需要学习简单的api,前端开发者就可以无障碍使用,学习成本很低。
而且,Node具有活跃的社区和丰富的模块池,拥有很多现成的功能实现。框架方面,也有成熟的koa,express等基本框架和egg等二次封装框架,可根据需求选择上手也比较方便

https://2014.jsconfchina.com/slides/herman-taobaoweb/index.html#/3