elpis-core: 基于 Koa 实现 web 服务引擎架构设计解析(一)

167 阅读2分钟

跟着哲玄大佬从0开发一个企业级全栈应用框架,有兴趣的同学可以去抖音搜索哲玄前端(全栈)

前言

本文记录elpis项目的基本介绍以及收获

项目框架设计

本项目基于Koa框架设计,手动实现BFF层,具体结构如图所示 f44bc5d12396444ea42de732f92e079e.jpeg

什么是BFF层?

BFF层(Backend For Frontend,前端专用后端)是一种架构模式,旨在为特定前端应用或用户界面提供定制化的后端服务。

主要特点

  1. 前端定制化:为特定前端应用提供专门优化的API
  2. 聚合服务:整合多个微服务功能,减少前端发起的请求数量
  3. 数据转换:将后端数据转换为更适合前端使用的格式
  4. 协议适配:处理不同协议间的转换

优劣

  • 减少前端与多个微服务直接通信的复杂性
  • 提高前端性能(通过减少请求次数和优化数据格式)
  • 允许前后端独立演进
  • 为不同客户端提供差异化服务

项目目录结构及功能

elpis
  |-- app // 文件目录
  |   |-- controller // 业务逻辑处理
  |   |-- extend // 拓展
  |   |-- middleware // 中间件
  |   |-- public // 静态资源根目录
  |   |-- router // 路由
  |   |-- router-schema // 路由校验规则
  |   |-- service // 数据处理
  |   |-- middlewares.js // 全局中间件
  |-- config // 环境配置文件
  |-- elpis-core // 引擎内核
  |   |-- loader // 各种加载器
  |   |   |-- config // 加载环境配置文件
  |   |   |-- controller // 加载业务逻辑处理文件
  |   |   |-- extend // 加载扩展文件
  |   |   |-- middleware // 加载中间件文件
  |   |   |-- router-schema // 加载路由校验规则文件
  |   |   |-- router // 加载路由文件
  |   |   |-- service // 加载数据处理文件
  |   |-- env.js // 运行环境判断(以后可能还有别的用处)
  |   |-- index.js // 引擎内核的入口文件
  |-- index.js // 项目的入口文件

项目启动

elpis入口文件加载loader中的各种加载器,加载器会加载app文件夹下对应的文件并应用

项目运行

54089d8523374e1398ca8154140098d5.png

洋葱圈模型(先进后出)

  1. 发起请求
  2. 匹配router
  3. 经过中间件(错误捕获 ---> 参数校验(router-schema) ---> 其他中间件)
  4. 响应结果

总结

经过这一阶段的学习,对服务端的项目结构以及构成模块有了更清楚的认识