Please enable JavaScript.
Coggle requires JavaScript to display documents.
Eggjs - Coggle Diagram
Eggjs
约定优于定义
initXXXX加载并在egg挂载各层内容
load动态加载文件内容
柯里化,从而在各层级传入koa对象
约定内容不被开发时可见,封装使用,隐藏细节
考虑柯里化,req的结果是对象还是函数
自动加载框架,自动处理
jwt鉴权
token方式鉴权
本地保存非明文的数据,并且保存数据摘要
jwt自动根据数据和密钥重新计算摘要,检查数据是否被篡改
需要鉴权的内容 api打头
鉴权接口
service
调用model
initService将所有service挂载到serivces集合中去
如果routes/controller层调用service,则正常的中间件没有传入app对象,影响正常使用
解决方法:注册router时,重新封装中间件方法,将app对象传入封装中的方法
controller也必须变成一个 工厂,传入app对象
统一的异常处理
await方法逐层向上抛,最顶层处理异常
http的status固定返回 200,隐藏服务器内部的错误,将错误代码设置到返回的内容中
额外设置异常处理程序,比如处理流,使用虫洞消费多余的流
开发环境返回详细信息
router
后端存在需要转发的情况
init自动加载所有route,并自动映射到koa对象的router对象下
调用controller或者service
接口定义
基于插件
swagger-doc,自动生成接口文档
根据jsdoc自动注册路由
统一正常处理
不同前端接口定义变化
helper函数定义接口返回码的定义,从而适应各种各样的平台的应答
不仅应答,比如时间之类,都可以
controller
调用service或者model
initController将所有controller归并到koa对象的ctrl对象下
中间件
基于配置
不是任何时候都需要加载所有中间件,所以需要配置
schedule
定时处理,类似crontab
initSchedule加载所有定时任务
validate接口格式检查
基于插件,validate可以根据接口的定义自动对传入参数进行格式检查
代码量低,易于维护
model
initmodel自动加载model,并配置其他层级的柯里化
config
在app创建之后立即加载config
文件上传
eggjs基于koa
eggjs通过插件支持各种各样的功能,比如squelize