elpis-core: 基于node.js 实现服务端内核引擎(里程碑1)

65 阅读2分钟

核心框架设计理念

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等),适应不同部署场景需求。

文件结构

image.png

加载顺续

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准确性