# 新建 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
Last Updated: 2022/11/13 12:30:47