Egg官网:https://www.eggjs.org/zh-CN/tutorials/index
快速创建项目
创建文件夹并进入对应文件夹
mkdir egg-example && cd egg-example
初始化egg项目
npm init egg --type=simple
自动下载egg项目所依赖的包(需要用到的第三方模块)
npm i
启动项目
npm run dev
egg项目介绍
app文件夹
app/controller/** :用于解析用户的输入,处理后返回相应的结果
app/public/**: 用于放置静态资源(和前端相关的文件js、css、html放在public下面可以直接访问到)
app/router.js:用于配置URL路由规则(自己创建路由返回内容就在这里配置)
在这里egg既是前端服务器也是后端服务器
app/controller/** =>存放后端的响应给前端的内容
app/public/**======>存放前端的代码
app/router.js======>存放后端路由,提供给前端(客户端)访问
- app/router.js
'use strict'; //使用严格模式
/**
* @param {Egg.Application} app - egg application
*/
module.exports = app => {
const { router, controller } = app;
//根据不同的路由,获得不同的内容
router.get('/', controller.myhome.index); //两个参数(请求资源地址,controller里面的myhome文件里面的index)
router.get('/login', controller.myhome.login);
router.get('/register', controller.myhome.register);
router.get('/userIndex', controller.user.index);
};
- app/controller/myhome.js
'use strict';
const Controller = require('egg').Controller;
class HomeController extends Controller {
async index() {
const { ctx } = this;
ctx.body = 'aaaaa'; // 响应给客户端的内容
}
async login() {
const { ctx } = this;
// 响应给客户端的内容
ctx.body = {
code: 1,
data: "登录成功"
};
// ctx.body = '登录成功';
}
async register() {
const { ctx } = this;
// 响应给客户端的内容
ctx.body = {
code: 1,
data: "注册成功"
};
}
}
module.exports = HomeController; //导出
config文件夹
egg项目配置文件(config文件夹里面的代码(两个js文件))一修改必须手动重新启动服务器
- config/config.default.js:配置服务器基本信息
config.cluster = {
listen: {
path: '',
port: 8000, //设置端口号
hostname: 'admin.jianmian.com',//域名的相关配置,默认localhost和ip地址,上线时用0.0.0.0
}
};
- config/plugin.js 用于配置需要加载的插件
package.json
保存项目的信息以及需要用到的第三方模块
获取提交的数据
接收GET请求的数据:ctx.request.query 和 ctx.query;(在app/controller/**文件打印)
接收POST请求的数据:ctx.request.body,而不是 ctx.body;post。请求时,会有安全验证问题,简单的处理方式是关闭安全验证:
// config/config.default.js
// 配置安全验证
config.security = {
csrf: {
enable: false,
ignoreJSON: true,
}
}
403:禁止访问(post请求会有安全验证问题,后端必须关闭安全验证)
404:找不到,前端访问,后端没有
注意:请求方式不是前端开发人员决定的,而是后端开发人员决定的