elpis 里程碑一

97 阅读3分钟

前言

在现代Web应用开发中,选择合适的框架架构对项目的可维护性和可扩展性至关重要。Elpis是一个基于Koa的企业级Node.js应用框架,它通过模块化设计和约定优于配置的理念,为企业应用提供了优雅的解决方案。

一、架构设计概览

image.png

image.png

Elpis核心架构设计转存失败,建议直接上传图片文件

BFF架构图转存失败,建议直接上传图片文件

二、核心框架特点

Elpis Core

Elpis Core是一个基于Koa.js构建的服务引擎框架,采用约定优于配置的设计理念,为企业级应用提供稳定可靠的基础架构。

设计原则

  1. 约定优于配置 - 降低学习成本,提高开发效率
  2. 可扩展的插件机制 - 灵活的扩展和插件配置
  3. 多环境支持 - 完善的多环境(测试、开发、生产)支持机制
  4. 健壮性保障 - 完善的错误处理和兜底机制

技术栈

  • 核心框架: Koa.js 2.7.0 - 轻量级的 Node.js Web 框架
  • 模板引擎: Nunjucks - 用于服务端渲染
  • 日志系统: Log4js
  • 任务调度: node-schedule
  • 开发工具: Nodemon (热重载)

三、项目架构

1. 自研核心(elpis-core)

  • 实现了类似 Egg.js 的插件化加载机制
  • 支持多环境配置 (local/beta/production)
  • 自动加载各大模块:Config、Controller、Extend、Service、Middleware、Router

2. MVC 分层架构

  • Controller - 处理HTTP请求和响应
  • Service - 业务逻辑层
  • Router - 路由配置
  • Middleware - 中间件处理

四、目录结构

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框架提供了7个核心加载器,按启动顺序执行各类模块的加载:

  • configLoader - 配置加载器:负责加载应用配置文件
  • extendLoader - 扩展功能加载器:加载框架扩展功能
  • middlewareLoader - 中间件加载器:加载应用中间件
  • serviceLoader - 服务加载器:加载业务服务层
  • controllerLoader - 控制器加载器:加载控制器模块
  • routerSchemaLoader - 路由模式加载器:加载路由校验规则
  • routerLoader - 路由加载器:注册应用路由

启动流程

Elpis框架采用严格的启动顺序,确保各模块正确初始化:

配置环境 → 加载配置 → 扩展加载 → 中间件加载 → 服务加载 → 控制器加载 → 全局中间件 → 路由模式 → 路由注册

启动顺序详解:

  1. 配置环境 - 初始化环境变量和基本配置
  2. 加载配置 - 读取各环境配置文件
  3. 扩展加载 - 注册框架扩展功能
  4. 中间件加载 - 加载应用中间件
  5. 服务加载 - 初始化业务服务层
  6. 控制器加载 - 加载控制器模块
  7. 全局中间件 - 应用全局中间件
  8. 路由模式 - 设置路由校验规则
  9. 路由注册 - 完成路由绑定

结语

Elpis框架通过其完善的架构设计和丰富的特性,为企业级Node.js应用开发提供了强有力的支撑。其灵活的扩展机制和约定优于配置的设计理念,能够有效提升开发效率和代码质量。