目录
一、项目执行顺序
使用的IDE为VS Code。安装egg.js插件可以智能提示,注意图标背景为黑色的
对于egg.js项目启动时:
1、首先在路由组件router.js中找到对应的url。
2、然后找到对应的controller中的对应的方法。
3、最后渲染页面,访问http://127.0.0.1:7001/getlist
二、路由参数传值
可参见官网 路由
路由传参
- 通过params获取:this.ctx.params
问号传参
- 通过query获取:this.ctx.query
修改状态码
- 通过status修改:this.ctx.status
1、query方式获取
通过this.ctx.query获取参数
// app/router.js module.exports = app => { app.router.get('/search', app.controller.search.index); }; // app/controller/search.js exports.index = async ctx => { this.ctx.body = this.ctx.query.name }; // curl http://127.0.0.1:7001/search?name=egg
2、参数命名-params
通过this.ctx.params获取参数
// app/router.js module.exports = app => { app.router.get('/user/:id/:name', app.controller.user.info); }; // app/controller/user.js exports.info = async ctx => { this.ctx.body = { id: this.ctx.params.id, name: this.ctx.params.name } }; // curl http://127.0.0.1:7001/user/123/xiaoming
3、页面获取信息
1、安装模板引擎egg-view-ejs,可见网址
npm i egg-view-ejs --save
2、配置: 使用ejs解析.html文件
// {app_root}/config/plugin.js
exports.ejs = {
enable: true,
package: 'egg-view-ejs',
};
// {app_root}/config/config.default.js
exports.view = {
mapping: {
'.html': 'ejs',
},
};
3、测试
// app/view/index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
hello <%= msg%>
<% for (var i = 0; i < list.length; i++) {%>
<h2><%= list[i]%></h2>
<%}%>
<!-- 对于静态资源可以直接访问 -->
<img src="/public/image/home.png" alt="">
</body>
</html>
// app/controller/home.js
async index() {
var list = [1, 2, 3, 4]
await this.ctx.render('index', {
msg:'world'
list
})
}
// app/router.js
module.exports = app => {
const { router, controller } = app;
router.get('/', controller.home.index);
};