Egg.js(Node,在Koa框架基础上开发出来的一个MVC框架。)
创建egg项目:
npm i egg-init -g//全局安装egg.js
egg-init Hello --type=simple//创建一个名为Hello,type为简单的项目
再在创建好的Hello项目文件下npm install安装所需要的依赖,npm run dev可以让项目跑起来
在项目文件夹中有两个文件比较关键:第一个是app文件夹,里面有controller和public,还有一个router.js .第二个是config文件夹,里面有config.default.js和plugin.js
1.controller是控制器,用于处理用户的输入,处理后返回相应的结果,静态资源一般放在public中,router.js用于来配置url路由规则.
2.config.default是用来写一些默认的配置,pulgin里面放的是一些常用的插件
Controller控制器:
1. 响应数据或者渲染模板
2. 接收用户的输入
3. 与路由建立对应的关系
demo1:
在controller目录下新建一个fruit.js,再在router中设置路由
class HomeController extends Controller {
async index() {
this.ctx.body = '获取一个水果';
}
}
module.exports = HomeController;
router.get('/fruit', controller.fruit.index);// /fruits是路径,controller.fruit.index则是路径对应的控制器
this.ctx可以获取当前请求的上下文对象,通过这个对象可以快捷的获取到response和require的属性与方法。
路由传递参数:
get请求获取参数的两种方式:
query:
async index() {
//在url末尾输入?index = 100;
let query = this.ctx.request.query; //?index = 100,这行代码就可以获取传输的index值,query是一个对象
this.ctx.body = `这个index值是${query.index}`;
}
此时?index=后的数字就会被query获得
params:
在router.js加:
router.get('/fruit/:id', controller.fruit.getID);
在fruits中加入getID函数:
async getID() {
//在url末尾输入/参数 = 100;
let id = this.ctx.params.id;
this.ctx.body = `这个index值是${id}`;
}
此时/后面的数字就会被id获取
demo2:
RESULT风格的url可以简化路由文件: