Skip to content

jonny-wei/koa2-middle

Repository files navigation

koa2-middle

node中间层服务框架

作用与特色

💎 ​​ Node.js 是一个基于 Chrome V8 引擎的Javascript运行环境,使Javascript代码可以作为服务端程序运行在服务器上。 得益于Node.js 的事件驱动,非阻塞,异步I/O等特性的设计思想,使得Node.js非常适合作为高性能的I/O密集型的中间层应用框架。

  • 跨域:解决跨域问题,前端不需要任何相关配置。
  • 数据mock:前后端同步开发。
  • 接口整合或拆分:中间层的功能是作为后端接口与客户端界面之间的桥梁。前端首先向中间层发起请求,中间层根据业务逻辑向指定后端服务发起请求,后端返回数据后, 中间层根据前端所需的数据格式、种类进行排序筛选等整合封装,最后返回给前端。
  • 页面渲染:服务端渲染SSR,更好的SEO,提高首屏加载性能。
  • 代理:在开发环境下,可以利用Node.js代理,解决最常见的跨域问题;在线上环境下,我们可以利用代理,转发请求到多个服务端,起到类似于Nginx的负载均衡作用,且Node.js中可以很方便的根据业务架构编写转发逻辑代码,相对Ngnix更加灵活。
  • 缓存:缓存其实是更靠近前端的需求,用户的动作触发数据的更新,Node.js中间层可以直接处理一部分缓存需求,在Redis中获取热点数据或临时数据。而不需要再去请求后端和数据库。
  • 限流:Node.js中间层里,可以针对接口或者路由做响应的限流逻辑开发。
  • 日志:相比其他服务端语言,Node.js中间层的日志记录,能更方便快捷的定位问题系统问题是后台服务还是前端问题。
  • 监控:利用Node.js擅长高并发的请求处理的特性,可以用来做服务流量监控入口监控。
  • 鉴权:微服务架构加可以将身份认证,权限校验的功能统一提前到中间层,不需要在每个服务里都对请求鉴权,降低代码冗余。此外也可以在Node.js中实现针对不同用户转发到不同后端服务的逻辑,这也是灰度发布的一种实现方式。
  • 路由:前端更需要掌握页面路由的权限和逻辑,在中间层中对接口数据、路由整合转发,可以实现前端路由和请求接口路由的一致性,而后端服务接口路由可以独立设计,不需要迁就某个客户端所需的路由。

参考

技术栈

🐯​ koa2

规范化的 Git 提交

🐌​​​ 使用 Angular 团队的代码提交规范

编码风格

🐱​ 使用**babel7编译** 和 Airbnb JavaScript 代码编码风格,项目支持ES6+的语法以及ESLint的语法检查。

日志

🐟​ 使用**log4js**定义异常日志,请求响应日志, 日常访问日志, 邮件报警日志等,更好的记录前后端日志,快速定位系统问题

自动化文件导出

🐙​ 使用**es6-requireindex**自动导出各模块

部署

🐪​​ 使用**pm2**作为守护进程管理器

待完善

🐛​ 后续使用**webpack或Gulp**等打包工具进行编译,打包与压缩