Elpis 项目技术文档

92 阅读3分钟

Elpis 项目技术文档

一、项目概述

Elpis 是一个基于 Koa 框架构建的 Web 应用项目,集成了多种功能模块,包括路由管理、中间件处理、服务调用、配置管理等。项目支持不同环境的配置,如本地开发、测试、生产环境等。

二、项目结构

app/
  controller/
  extend/
  middleware/
  middleware.js
  public/
  router/
  router-schema/
  service/
config/
  config.beta.js
  config.default.js
  config.prod.js
elpis-core/
  env.js
  index.js
  loader/
      config.js
      controller.js
      extend.js
      middleware.js
      router-schema.js
      router.js
      service.js
index.js
package.json
.eslintignore
.eslintrc.json
.git/
.gitignore
README.md

主要目录说明

  • app:业务逻辑代码目录,包含控制器、中间件、服务、扩展等。
  • config:配置文件目录,根据不同环境提供不同配置。
  • elpis-core:核心加载器目录,负责加载中间件、路由、控制器等。
  • public:静态资源目录。

三、技术栈

  • 后端:Koa 框架,用于构建 Web 服务器。
  • 路由koa-router 用于处理路由。
  • 中间件:自定义中间件处理请求,如签名验证、参数验证、错误处理等。
  • 服务:自定义服务处理业务逻辑。
  • 配置管理:根据不同环境加载不同配置。
  • 日志log4js 用于日志记录。

四、项目启动

启动命令

//package.json
"scripts": {
  "lint": "eslint --quiet --ext js,vue .",
  "dev": "set _ENV='local' && nodemon ./index.js",
  "beta": "set _ENV='beta' && nodemon ./index.js",
  "prod": "set _ENV='production' && nodemon ./index.js"
}
  • npm run dev:启动本地开发环境。
  • npm run beta:启动测试环境。
  • npm run prod:启动生产环境。

五、核心模块说明

1. 中间件加载器

  • 文件路径elpis-core/loader/middleware.js
  • 功能:加载所有中间件,并挂载到 app.middlewares 中。

2. 路由加载器

  • 文件路径elpis-core/loader/router.js
  • 功能:加载路由配置,将路由映射到对应的控制器方法。

3. 控制器加载器

  • 文件路径elpis-core/loader/controller.js
  • 功能:加载所有控制器,并挂载到 app.controller 中。

4. 服务加载器

  • 文件路径elpis-core/loader/service.js
  • 功能:加载所有服务,并挂载到 app.service 中。

5. 配置加载器

  • 文件路径elpis-core/loader/config.js
  • 功能:根据不同环境加载对应的配置文件。

6. 扩展加载器

  • 文件路径elpis-core/loader/extend.js
  • 功能:加载所有扩展,并挂载到 app.extend 中。

六、路由和接口说明

1. 视图路由

  • 文件路径app/router/view.js
  • 接口GET /view/:page
  • 功能:渲染对应页面。

2. 项目列表接口

  • 文件路径app/router/project.js
  • 接口POST /api/project/list
  • 功能:获取项目列表。

3. 接口参数校验

  • 文件路径app/middleware/api-params-verify.js
  • 功能:对 API 请求的参数进行校验。

4. 接口签名验证

  • 文件路径app/middleware/api-sign-verify.js
  • 功能:对 API 请求的签名进行验证。

七、错误处理

  • 文件路径app/middleware/error-handler.js
  • 功能:兜底所有异常错误,对不同类型的错误进行处理,如页面不存在时重定向到首页,其他错误返回统一的错误信息。

八、日志管理

  • 文件路径app/extend/logger.js
  • 功能:根据不同环境配置日志输出方式,本地环境打印在控制台,线上环境打印在文件中。

九、环境配置

  • 文件路径elpis-core/env.js
  • 功能:获取当前环境配置,支持 localbetaproduction 三种环境。

十、开发注意事项

  • 遵循 ESLint 代码规范,使用 npm run lint 进行代码检查。
  • 新增中间件、路由、控制器、服务等需要在对应的加载器中进行配置。
  • 不同环境的配置需要在 config 目录下创建对应的配置文件。