初始化
在终端中执行以下语句
npm i egg-init -g;//脚手架安装
egg-init egg-example --type=simple;//初始化目录
cd egg-example;
npm i;//安装项目依赖
npm run dev;//热部署启动
在初始化之后,目录就已经自动完成了
目录结构
接下来,我们来看一下egg的目录结构(了解)
egg-project
├── package.json -- 框架配置,依赖
├── app.js (可选) -- 用于自定义启动时的初始化工作
├── agent.js (可选) -- 代理(同上)
├── app
| ├── router.js -- 用于配置 URL 路由规则
| ├── model -- 用于放置领域模型
│ | └── user.js
│ ├── controller -- 用于解析用户的输入,处理后返回相应的结果
│ | └── home.js
│ ├── service (可选) -- 用于编写业务逻辑层
│ | └── user.js
│ ├── middleware (可选) -- 用于编写中间件
│ | └── response_time.js
│ ├── schedule (可选) -- 用于定时任务
│ | └── my_task.js
│ ├── public (可选) -- 用于放置静态资源
│ | └── reset.css
│ ├── view (可选) -- 用于放置模板文件
│ | └── home.tpl
│ └── extend (可选) -- 用于框架的扩展
│ ├── helper.js (可选)
│ ├── request.js (可选)
│ ├── response.js (可选)
│ ├── context.js (可选)
│ ├── application.js (可选)
│ └── agent.js (可选)
├── config -- 配置文件
| ├── plugin.js -- 用于配置需要加载的插件
| ├── config.default.js -- 用于编写配置文件(下同)
│ ├── config.prod.js
| ├── config.test.js (可选)
| ├── config.local.js (可选)
| └── config.unittest.js (可选)
└── test -- 用于单元测试
├── middleware -- 用于中间件单元测试
| └── response_time.test.js
└── controller -- 用于controller层的单元测试
└── home.test.js
egg的mvc模式
在egg中视图 (view)、控制器(controller) 和数据模型 Model(Service) 和配置文件(config)
controller:
控制器可以认为就是一个接口,管理输入和输出。同样可以在app/controller 目录下 写很多个这样个js的,来代表接口
路由(Router)
主要用来描述请求 URL 和具体承担执行动作的 Controller 的对应关系, 框架约定了 app/router.js
文件用于统一所有路由规则。controller下的js文件就可以对应一个路由。
get、post请求
1. get 请求--- query
在 URL 中 ?
后面的部分是一个 Query String,这一部分经常用于 GET 类型的请求中传递参数。例如 GET /news?name=kiki&age=26
中 name=kiki&age=26
就是用户传递过来的参数。我们可以通过 context.query
(为一个对象)拿到解析过后的这个参数体