简单来说:egg.js 是『约定优先于配置』的一个 Node.js web 框架,
基于MVC设计思想设计的。
它具有以下特点:
1 app/router.js:用于配置URL路由规则;
2 app/controller/** :用于解析用户的输入,处理后返回相应的结果;
3 app/service/: 用于编写业务逻辑层;
4 app/public/: 用于放置静态资源;
5 config/config.{env}.js: 用于编写配置文件;
6 config/plugin.js 用于配置需要加载的插件;
定义了我们的路由规则,所有的请求都会通过这个路由规则去找对应的Controller,这样也可以做到统一管控。
其业务逻辑如下图所示:

基本用法:
router.verb('path-match', app.controller.action);
router.verb('router-name', 'path-match', app.controller.action);
router.verb('path-match', middleware1, ..., middlewareN, app.controller.action);
router.verb('router-name', 'path-match', middleware1, ..., middlewareN, app.controller.action);
verb 为请求方法
router-name 给路由设定一个别名,可以通过 Helper 提供的辅助函数 pathFor 和 urlFor 来生成 URL。(可选)
path-match - 路由 URL 路径。
middleware1 - 在 Router 里面可以配置多个 Middleware。(可选)
controller - 指定路由映射到的具体的 controller 上,controller 可以有两种写法:
app.controller.user.fetch - 直接指定一个具体的 controller
‘user.fetch’ - 可以简写为字符串形式
Controller负责解析用户的输入,处理后返回响应的结果。
1.所有的Controller 文件都必须放在 app/controller目录下
2.支持多级目录,访问时可以通过目录名级联访问。
//如果路由为:
router.get('/ajax1', controller.user.ajax1);
//则控制器对应要有一个user.js文件并且文件中有ajax1方法
async ajax1() {
const { ctx } = this;
ctx.body = [ 'ljy', 666 ];
}
主要用于操作数据库
需要手动下载:
npm i --save egg-mysql
开启插件
// config/plugin.js
module.exports = {
mysql: {
enable: true,
package: "egg-mysql"
}
};
配置数据库
// config/config.default.js
config.mysql={
client:{
//host
host:"localhost",
//端口
port:"",
//用户名
user:"",
//密码
password:"",
//数据库名
database:""
}
}
使用方式:
async getuserinfo(){
var mySql = await this.app.mysql.query("select *from studentinfo")
this.ctx.body=mySql
}
egg提供5种配置文件: