内核设计elpis-core (BFF层)

155 阅读2分钟

内核设计elpis-core (BFF层)

项目架构设计

架构设计结构.jpg

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: 服务层

接入步骤:

  1. loader步骤:读取loader文件
  2. 注册所有文件(使得文件可以app.loaderModule.**.js)这样访问
    • 文件名由loader-module改成驼峰loaderModule
    • 每个文件都传入 app实例
  3. 将loader挂载到app上: app[loader] = loader

总结

elpis-core 是一个基于Koa 和 node.js 打造的企业级 BFF 服务框架,它巧妙地继承了 Koa 的洋葱圈模型,并在此基础上构建了一套完整的应用开发体系。

核心特点:

  1. 约定优于配置
  • 定义了标准化的项目目录结构
  • 自动化的组件加载机制
  • 简化开发流程,提高团队协作效率
  1. 中间件系统
  • 基于 Koa 的洋葱圈模型
  • 灵活的中间件配置和管理
  • 支持自定义中间件的接入
  1. 模块化设计
  • 清晰的职责划分(路由、服务、控制器等)
  • 自动化的依赖注入
  • 可插拔的组件化架构
  1. 环境适配
  • 支持多环境配置(开发、测试、生产)
  • 智能的配置加载机制
  • 环境变量的统一管理

不只是停留在上层工具的应用,而是需要理解底层代码,上层的工具变化的很快但是工程化的思想是不变的.

抖音“哲玄前端”,《全栈实践课》