elpis总结——基于koa的elpis-core

什么是 elpis-core ?

elpis-core 是对 koa 应用框架的一层封装,是精简版的 Node.js 框架;本质就是应用加载器,可以通过内部的 loader 加载代码,这块代码必须是按照约定的方式目录结构以及格式来写的。也可以理解为是精简版的 egg.js 。

elpis-core 都做了什么?

elpis-core 本质上是一个"应用加载器";

  1. 初始化 koa 实例
  2. 按照约定自动加载业务代码(controller、service、middleware、... 等)
  3. 统一管理配置和环境
  4. 启动 HTTP 服务

elpis-core 文件结构

ruby 复制代码
elpis-core/
├── index.js          # 入口文件
├── env.js            # 环境判断
├── utils.js          # 工具函数
└── loader/           # 各类加载器
    ├── config.js     # 配置加载器
    ├── controller.js # 控制器加载器
    ├── service.js    # 服务层加载器
    ├── middleware.js # 中间件加载器
    ├── router.js     # 路由加载器
    ├── router-schema.js # 路由参数校验 Schema 加载器
    └── extend.js     # 扩展加载器

loader 作用

loader 主要是把项目文件夹内容挂载到 koa 实例,目的就是实现分层架构,解耦模块间的依赖,每个模块都统一访问入口在 app 实例上访问。

项目文件结构

arduino 复制代码
config/              → 项目配置
app/ 
├── controller/      → 处理请求、调用 service、返回响应
├── service/         → 业务逻辑层
├── middleware/      → 中间件(鉴权、日志、错误处理等)
├── router/          → 路由定义
├── router-schema/   → 路由校验规则
└── extend/          → 扩展 app 能力(如 logger)
模块 作用
configLoader config/config.{env}.js 文件内容挂载到koa实例
controllerLoader 自动扫描 app/controller/**/*.js,并挂载koa实例
middlewareLoader 自动扫描 app/middleware/**/*.js,并挂载koa实例
serviceLoader 自动扫描 app/service/**/*.js,挂载koa实例
routerSchemaLoader 加载 app/router-schema/*.js,挂载到koa实例,用于 API 参数校验
routerLoader 自动扫描 app/router/**/*.js,注册到 koa-router,并挂载koa实例
extendLoader 加载app/extend/*.js,直接扩展 app 实例

koa 的洋葱圈模型

elpis-core 是对 koa 的封装,其中间件的执行顺序也是洋葱圈模型;请求从外层中间件进入,一层层向内传递,到达核心后再一层层向外返回。类似栈结构的先进后出,先进入的中间件最后也会在路过一次。

总结

通俗的来讲 elpis-core 就是项目的启动器,来启动按照我们约定的规则编写的项目,也就是极简版egg.js。

相关推荐
huakoh4 分钟前
MCP 到底解决了什么问题:从协议设计到官方 Python SDK 最小实现
前端
用户059540174466 分钟前
用了半年 LangChain Memory,才发现记忆总“串台”——3 个自动化测试避坑指南
前端·css
大爱编程♡8 分钟前
Vue3基础
前端·javascript·vue.js
weedsfly10 分钟前
防抖与节流:从原理到 React Hook 封装
前端·javascript·面试
甜味弥漫11 分钟前
React 从类组件到 Hooks:为什么 Hooks 改变了 React?
前端·javascript·react.js
天蓝色的鱼鱼17 分钟前
让 AI 写代码半年后,我发现了几个藏在项目里的安全隐患
前端·javascript·ai编程
随风一样自由34 分钟前
【前端+跨端技术新格局】Tauri vs Electron 完整性能对比(2026实测数据+底层原理)
前端·javascript·electron
L-影40 分钟前
Pydantic 模型:为你的 Web 数据装上“安检系统”
前端
Reload.1 小时前
GJ航司,验证码网易易盾 JS逆向 纯算轨迹
开发语言·前端·javascript
L-影1 小时前
FastAPI 请求头与 Cookie:Web 世界的“身份证”与“通行证”
前端·fastapi