天天看点

nodejs做中间层_NodeJs作为中间层的一些想法:接口方面

背景

三月离职,紧接着就入职了一个新团队,前端方面是大前端方向,NodeJs作为中间层,负责页面的渲染,已经整合接口给多端(目前就Android),在浏览器端比较传统,jQuery的方式。

在上家公司,快两年的时间,一直在浏览器端玩耍,并且开发模式比较传统,几乎可以用套模板来形容。不过,在实现交互效果、浏览器端的基础,积累蛮多的。当然,空余时间也玩过NodeJs方面的东西,虽然不曾在公司业务上有多实践,私下有过基础经验。

现有项目情况

当我入职的时候,项目基础已经搭建好了,Express 作为服务器端支持,Nunjucks 作为模板引擎,swagger 来充当接口文档,另外结合上 fis 做组件化支持。内部实现了几个中间件为业务做支持,对 Express 的 request 、 response 简单的扩展了几个接口,很简单、很轻便的开发。

开发业务的时候基本上就是请求接口、完善数据、输出到页面,ajax请求的接口单独写在api路由里面,以后也会供给多端使用。开发到了这个时间,要为多端提供数据接口,于是通过修改原来扩展的渲染界面的接口(response.renderSuccess),判断请求信息,输入json数据。

简单的想法

以前在上家公司,有问过Java开发他们是怎么写接口的,当时也在学习NodeJs,想知道其他服务器端语言开发怎么做开发。大概他们会先对业务上的东西先抽象出来,维护成为一个对象,在这个对象里进行各种数据校验,以及管理对数据库的操作。然后在把公共操作放在一个服务模块中,需要的时候只要调用服务,最终业务上各有变动,维护对象就好了。在对外的接口上,就是调用各种服务,找到数据返回回去。

在项目上,有一个简单的想法,Express 里弄一个业务数据路由,里面把各种业务需要的数据整合在一起,无论是Android、iOS、移动端、服务器端,都统一了数据格式,并且是完整的数据。

在做业务的时候,会发生这样的事,渲染一个列表,一个接口并不能提供全数据,然后,还要找其他接口查询。例如,一个人员列表,接口可能只提供当前业务相关的数据,人员详细数据要再通过 userId 一个一个查询个人信息。导致渲染页面的路由里面写了很多很多代码。

以前在做移动端web开发,一个接口可以把需要的数据都提供了,请求都很简单,写起来业务棒棒哒。另外,接口都是和Android、iOS共用的,所以初步认为,大家都是渲染页面。

现在用 Express 渲染页面,大概理解为简单的做了一个代理,请求后端数据。有时候还是蛮想让接口那边提供全数据,但是,他们业务会耦合。没法,脏累差的活还是交给NodeJs处理。

那么,我就想,要不专门弄一个模块(路由)综合处理这些数据,然后多端的数据格式都一致了。

例如,在服务器端渲染页面,只要通过代理请求当前服务器上某个接口,就可以得到一个完整的数据,并且多端都是一样的。在 Express 上,渲染页面和业务逻辑就完全分离出来了,好像还不错的样子。

不知道对不对

想法挺好的,把业务代码和渲染页面分开了,假若按照这样划分,统一了进入、出去的所有数据格式,但是,在服务器上多请求了一次接口。