# 新建 eggjs 项目
# 初始化项目
egg 脚手架是在项目根目录运行的,需要先创建项目目录,然后进入项目目录运行初始化命令。
// 创建并进行项目目录
mkdir egg-example && cd egg-example
// 初始化项目
npm init egg --type=simple
// 安装依赖
npm i
# 初始化 GIT(可选)
在项目根目录运行
git init
# 自动路由配置(懒人可选)
使用的李金鹏 jetlee (opens new window)分享的代码,非常感谢。
"use strict";
// filePath: app/router.js
// 全局变量定义 方法object对象
global.actionObject = {};
// 实现方法Object.keys(controller[item]) == 0 时,为控制下具体方法,直接加入到actionObject集合,>0说明是多级控制器,继续遍历
function getAction(controller, path) {
const controllerArray = Object.keys(controller);
controllerArray.forEach((item) => {
const newPath = path + "/" + item;
if (Object.keys(controller[item]).length > 0) {
getAction(controller[item], newPath);
} else {
global.actionObject[newPath] = controller[item];
}
});
}
/**
* @param {Egg.Application} app - egg application
*/
module.exports = (app) => {
const { router, controller } = app;
getAction(controller, "");
// 得到actionObject的key数组
const actionArray = Object.keys(global.actionObject);
// 遍历加入到路由
actionArray.forEach((item) => {
// 自动实现路由指向方法 需要哪种请求头任意添加
router.get(item, global.actionObject[item]);
router.post(item, global.actionObject[item]);
});
// 这里可以继续添加方法,不冲突
router.get("/", controller.home.index);
};
访问方法,可以直接访问 / 控制器名 / 方法名, 多层控制器就是 /文件夹名/文件夹名/控制器名/方法名
# 关闭 csrf 验证(慎重)
修改 config/config.default.js
config.security = {
csrf: {
enable: false,
},
};
只关闭 json 请求的 csrf 验证
module.exports = {
security: {
csrf: {
ignoreJSON: true, // 默认为 false,当设置为 true 时,将会放过所有 content-type 为 `application/json` 的请求
},
},
};
# 安装 egg-mongo-native 插件 (使用 mongodb 数据库时配置)
安装命令
npm i egg-mongo-native --save
开启插件
// config/plugin.js
exports.mongo = {
enable: true,
package: "egg-mongo-native",
};
脚手架生成项目默认是 module.export 模式,按如下修改
"use strict";
/** @type Egg.EggPlugin */
module.exports = {
// had enabled by egg
// static: {
// enable: true,
// }
mongo: {
enable: true,
package: "egg-mongo-native",
},
};
# 安装 egg-sequelize (opens new window) (使用其他数据库时配置)
安装命令
// 安装基础插件
npm install --save egg-sequelize
// 安装mysql插件
npm install --save mysql2
开启插件
// config/plugin.js
exports.sequelize = {
enable: true,
package: "egg-sequelize",
};
脚手架生成项目默认是 module.export 模式,按如下修改
"use strict";
/** @type Egg.EggPlugin */
module.exports = {
// had enabled by egg
// static: {
// enable: true,
// }
sequelize: {
enable: true,
package: "egg-sequelize",
},
};
安装 sequelize-cli
npm install --save-dev sequelize-cli