核心框架设计理念
Elpis-Core是基于Koa实现的轻量级服务端内核引擎,参考Egg.js,通过模块化设计和标准化目录结构(如controller、service、middleware、router等)实现自动化加载与初始化。其核心架构包含:
- 模块化加载器:通过config、controller、middleware、router-schema、service等加载器自动解析对应目录文件(如
app/controller下的业务逻辑文件),挂载至Koa实例,减少手动配置成本。 - 洋葱模型中间件:遵循Koa的中间件执行流程,支持参数校验、签名验证、错误处理等逻辑的分层管理,确保请求响应的完整生命周期可控。
- 多环境配置:支持local/beta/production环境配置(如local,beta,prod等),适应不同部署场景需求。
文件结构
加载顺续
configLoader
extendLoader
serviceLoader
middlewareLoader
routerSchemaLoader
controllerLoader
globalMiddlewareLoader
routerLoader
环境配置: 通过 env.js 实现环境变量的统一管理
路由管理: 通过json-schema 来管理和定义路由
网络请求和响应的处理: 通过路由、控制器、服务模块和中间件构成整个请求和响应路径;
插件: 支持自定义多个插件能力
扩展: 支持扩展更多定制性功能
服务端渲染SSR
基于koa-nunjucks-2提供上下文的render函数,进行渲染
module.exports = (app)=>{
return class ViewController {
async renderPage(ctx){
await ctx.render(`output/entry.${ctx.params.page}`,{
name:app.options?.name,
env:app.env.get(),
options:JSON.stringify(app.options)
})
}
}
}
备注
validate-commit-msg : 校验git提交
ghooks :监听git提交校验等的钩子
nodemon: :自动化执行node index.js
cross-env:兼容window系统的设置环境变量
koa-bodyparser: Koa 中间件,用于解析 HTTP 请求体(RequesttBody),将 JSON、表单数据(application/x-www-form-urlencoded)、文本等格式的请求体自动解析为 JavaScript 对象,方便在 Koa 应用中直接访问。
log4js:错误日志输出到指定文件
json-schema:用于注释和验证 JSON 文档的结构、约束和数据类型
ajv:校验json-schema准确性