最早接触 nodeJs 作为中间层服务好像是在 17 年初,不过一直都没有机会进行实现(毕竟在此之前我都只是一个基层员工的角色).而虽然到这公司来成为一个前端 leader,但是好多地方还是不能放开手脚去干(不然我早就上 angular 或者 react 了),其实在很多地方都差不多,很少有人能随心所欲的追求自己想要的东西.
这段时间正好赶上项目扩展,而在之前的代码上我尝试进行服务器端渲染,但是由于之前的项目引入了一个第三方框架,巧合的是这个第三方框架在服务器端渲染出错.所以我抓住这个机会对之前的项目进行重构,尽量保证后面的代码不要依赖太多的第三方框架,过多的依赖会增加维护和扩展的难度.在重构的同时也对 node 作为中间层服务进行一次实践.
网上对 nodejs 的介绍太多了,这里就不再赘述,相关文章:
细说后端模板渲染、客户端渲染、node 中间层、服务器端渲染(ssr)
【探索】NodeJS 中间层搭建——楔子
我的理解
优点:
- UI 与数据模型的解耦
- 服务端只负责吞吐数据,减少服务端修改数据结构的情况,数据结构的解析放到前端开发人员身上
- 在数据量过大或步骤繁琐通信频繁的时候,考虑到前端性能或者前端网络稳定情况,可以将多个请求与数据量较大的处理过程放到 Nodejs 中间层去处理
缺点:
- 前端的工作量有所增加
- 多一层带来的性能问题
实践
- 使用 koa 搭建 node 中间层服务器
- 使用 koa-bodyparser 中间件解析请求参数
- 使用 koa-router 中间件配置路由
- 自定义 restful api 中间件
- 使用 axios 来转发封装请求
- 完善路由、控制器
具体代码见 node 中间层的一次实践
总结
经过这次实践,对 nodeJs 作为中间层服务有了更全面的认识,除了上面提到的好处之外,还可以解决跨多个域的问题.但是也发现一些不足,比如为了方便路由管理,所有的请求都走 node 中间服务器,导致了工作量大大增加.如果有相关实践的朋友请指出.
[越努力,越幸运!]