内核设计elpis-core (BFF层)
项目架构设计
BFF 主要作用
- 数据整合:整合多个后端服务的数据,减少前端请求次数
- 数据转换:根据前端需求转换数据格式
- 接口适配:为不同的前端应用(Web、移动端、小程序等)提供定制化接口
项目结构
app/
├── router-schema/ # 接口校验
├── router/ # 路由分发
├── middleware/ # 中间件
├── controller/ # 业务逻辑
├── service/ # 原子服务
├── config/ # 配置文件
└── extend/ # 功能扩展
技术选型
node.js v18, Koa2
elpis-core引擎实现
创建一个新的Koa实例const app = new Koa();
该实例app将用于:
- 配置应用
- 添加中间件
- 处理HTTP请求
- 设置路由
- 启动web服务
1.封装koa启动服务,实现elpis.start()
- elpis-core
- index.js: 启动服务文件
- env.js: 获取项目环境
2.增加elpis.start()配置 options
将options中的配置给app
- options
- app.baseDir: 根目录
- app.BusinessDir: 业务逻辑目录
- app.env: 运行环境
3.增加elpis.loader
index.js中引入全部loader
- loader
- 接入层
- middlware:中间件
- router: 路由分发
- router-schema: 路由校验
- 业务层
- controller: 业务逻辑处理
- extend: 拓展
- config: 配置
- 服务层
- service: 服务层
- 接入层
接入步骤:
- loader步骤:读取loader文件
- 注册所有文件(使得文件可以app.loaderModule.**.js)这样访问
- 文件名由loader-module改成驼峰loaderModule
- 每个文件都传入 app实例
- 将loader挂载到app上: app[loader] = loader
总结
elpis-core 是一个基于Koa 和 node.js 打造的企业级 BFF 服务框架,它巧妙地继承了 Koa 的洋葱圈模型,并在此基础上构建了一套完整的应用开发体系。
核心特点:
- 约定优于配置
- 定义了标准化的项目目录结构
- 自动化的组件加载机制
- 简化开发流程,提高团队协作效率
- 中间件系统
- 基于 Koa 的洋葱圈模型
- 灵活的中间件配置和管理
- 支持自定义中间件的接入
- 模块化设计
- 清晰的职责划分(路由、服务、控制器等)
- 自动化的依赖注入
- 可插拔的组件化架构
- 环境适配
- 支持多环境配置(开发、测试、生产)
- 智能的配置加载机制
- 环境变量的统一管理
不只是停留在上层工具的应用,而是需要理解底层代码,上层的工具变化的很快但是工程化的思想是不变的.
抖音“哲玄前端”,《全栈实践课》