0. 目录介绍
(留坑,整体学完根据自己的理解再回来,先贴一张图)
1. 控制器Controller
Controller负责解析用户的输入,处理返回相应的结果。
根据不同的开发形式分为一下三种控制器:
- RESTfull接口模式中,控制器接收用户的参数,在数据库中查找相应的结果返回给用户或将用户的请求更新到数据库中。
- HTML页面请求中,控制器根据用户访问不同的URL,渲染不同的模版返回HTML给用户。
- 在代理服务器中,控制器将用户的请求转发给其他服务器,再将其他服务器的处理结果返回给用户。
1.1 控制器在HTML页面中的使用
举个栗子~
创建一个一个新的Controller
./app/controller/index.js
'use strict'; // 严格模式,这一句可以没有
const Controller = require('egg').Controller; // 在egg框架中引入控制器
class HomeController extends Controller { // 创建一个类
// egg框架规范:所有方法必须异步的形式
async detail() {
// 向页面输出,需要得到页面的上下文
// 复习复习: html页面中使用,是通过url,渲染不同的模版返回html。
const { ctx } = this;
// 简单抛个砖
ctx.body = '<h1>Page detail </h1>';
}
}
// 输出这个类
module.exports = HomeController;
简单想一下,现在我们的页面上可以访问到,输出结果为'Page detail'的页面了么?当然不能对吧,因为我们还少了一步,URL!(配置路由)
./app/router
'use strict';
module.exports = app => {
const { controller, router } = app;
// index路径下的detail方法
router.get('/detail', controller.index.detail);
}