本文主要学习 Egg.js 里最重要的部分Controller
。
Controller 是什么?
Controller
,也就是控制器,简单说Controller 负责解析用户的输入,处理后返回相应的结果。但是由于开发形式的不同,Controller 的具体作用还是有一些区别的。
- 在
RESTful
接口中,Controller 接受用户的参数,从数据库中查找内容返回给用户或者将用户的请求更新到数据库中。 - 在 HTML 页面请求中,Controller 根据用户访问不同的 URL,渲染不同的模板得到 HTML 返回给用户。
- 在代理服务器中,Controller 将用户的请求转发到其它服务器上,并将其它服务器的处理结果返回给用户。
官方给的建议是 Controller 层主要对用户的请求参数进行处理(校验、转换),然后调用对应的
service
方法处理业务,得到业务结果封装并返回。
本文我们主要学习三种用途的第二中,在 HTML 页面请求中的使用。这也是简单、最好理解的一个使用方法。
创建一个新的 Controller
接下来我们自己手写一个 Controller.
在/app/controller
目录下,新建一个文件 mybj.js
,然后编写下面的代码:
'use strict'; const Controller = require('egg').Controller; class MybjController extends Controller{ async index(){ const { ctx } = this; ctx.body = '<h1>I am Mybj</h1>'; } } module.exports = MybjController;
通过自己手写能够让我们熟悉 Controller 的最简单写法,写完这个 Controller 后,你在浏览器中是没办法访问到的,这时候你还需要去配置路由。
路由的配置
打开/app
目录下的router.js
文件。这时候你不用引入,你只用增加如下代码就可以进行访问了。
router.get('/my',controller.jspang.index);
本文的主要目的,就是了解如何编写一个新的Controller
,使用 Egg.js 基本有一半时间都在处理 Controller,所以我们有必要详细了解一下。
如果你也是一个新手,建议你还是手写Controller
文件,只有动手编写,我们才能领悟更深。