egg.js的快速入门

99 阅读1分钟

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里面放的是一些常用的插件

3.png

Controller控制器:

1. 响应数据或者渲染模板

2. 接收用户的输入

3. 与路由建立对应的关系

捕获.PNG

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:

捕获1.PNG

RESULT风格的url可以简化路由文件:

捕获3.PNG