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 - 功能:获取当前环境配置,支持
local、beta、production三种环境。
十、开发注意事项
- 遵循 ESLint 代码规范,使用
npm run lint进行代码检查。 - 新增中间件、路由、控制器、服务等需要在对应的加载器中进行配置。
- 不同环境的配置需要在
config目录下创建对应的配置文件。