[记录]EggJs初始化项目

一.起因

 

        在nodeJs环境中有多种框架比如说大家比较熟悉的express、koa以及今天的主角egg.js。相较于express,如今我更喜欢使用egg.js一些。eggJs的介绍和优劣我就不再这里多嘴了,想要了解的朋友们可以访问egg.js官网,或者查看别的文章自行了解。

        因为平常使用的都是已经搭好的骨架,突然发现从零开始搭建egg项目的时候容易迷糊,因此写下本篇文章作为记录,也算是巩固一遍流程。

二.搭建步骤

        1.编译环境的准备

        想要搭建egg项目首先需要具备nodejs的环境。我们可以在Nodejs的官网下载。(nodejs分为最新版和旧版本,旧版本其实指的是长期维护版,一般来说我会推荐大家使用长期维护版也就是旧版本)

        安装完成后在控制台输入node -v 来查看是否成功安装,出现类似如下版本信息代表安装成功

 2.安装egg脚手架(可省略)

        这里的脚手架与Vue脚手架类似,我们通过在控制台输入指令 npm i egg-init -g 来安装。(一般来说,nodejs版本>8.x,npm版本>=6.1.0可以直接执行初始化项目指令创建egg项目,如果未成功再执行本条指令)

    3.初始化项目

        在做完前面的准备之后,我们就可以着手于初始化项目了。第一步,我们需要创建一个文件夹作为项目文件夹,例如我在桌面上创建一个EggTest的文件夹。

        第二步,我们需要在创建的文件夹(EggTest)中打开控制台或打开控制台切换到文件夹目录中,输入指令 npm init egg -- type=simple 来创建项目。(出现下面的安装界面代表成功运行了egg的脚手架)

        我们可以看到,脚手架给我们提供了多种选择(可能时因为--type=simple没有生效),将egg作为我们web项目的后端我们只要选择simple选项就可以了。后续会让我们填写一些项目的信息,大家可以选择性填写,也可以全部默认回车。得到以下的信息便代表项目初始化成功。

        接下来在控制台中输入npm i 将依赖下载下来,至此项目的初始化完成。

      我们可以在命令行输入 npm run dev ,再打开页面查看项目是否成功部署。(看到hi,egg代表项目成功部署了)       

        4. 配置数据库

        这里我使用的是mysql数据库,同时我使用了sequelize数据库框架。

         第一步,安装sequelize的依赖,在控制台或者终端中输入以下指令:

         npm i --save egg-sequelize mysql2

        第二步,配置sequelize。在 config/plugin.js 和 config.default.js 分别添加内容如下:

        ① plugin.js

  sequelize: {
    enable: true,
    package: 'egg-sequelize',
  },

        ② config.default.js

  config.sequelize = {
    dialect: 'mysql', // 连接的数据库类型
    host: '127.0.0.1', //连接的主机地址
    username: 'root', //数据库用户名
    password: 'root', //数据库密码
    port: 3306, //数据库端口
    database: 'learn-mysql', //数据库的名称
    timezone: '+08:00', // 将时区转为中国时区
    pool: {
      //连接池配置(可省略)
      max: 5,
      min: 0,
      idle: 10000,
    },
    define: {
      freezeTableName: true, //是否允许自定义表名
      timestamps: false,  //是否关闭默认时间戳
      // createdAt: 'created_at',
      // updatedAt: 'updated_at',
    },
  };

        第三步,创建sequelize模型,在app文件夹下新建model文件夹用来存放sequelize的模型。

注意文件的命名,在egg的操作中类似java的导包(ctx.model.boys.boys)就可以访问到boys.js文件暴露出来的内容(方法和数据)。因此最好做到见名知意

        文件代码如下:

'use strict';

module.exports = (app) => {
  const { DataTypes } = app.Sequelize;
  const Boys = app.model.define('boys', {
    boy_name: {
      type: DataTypes.STRING,
    },
    id: {
      type: DataTypes.INTEGER,
      primaryKey: true, //是否为主键
      autoIncrement: true, //是否自动增长
    },
  });
  return Boys;
};

       第四步完成了模型的简单配置,我们就可以去处理业务层的内容,首先在Service中定义一个BoyService.js文件,专门处理Boys表相关的数据库操作。

        文件的内容如下:

'use strict';

const {Service} = require('egg');

class BoyService extends Service {
  async getAllBoysInfo() {
    const { ctx } = this;
    try {
      return await ctx.model.Boys.Boys.findAll();
    } catch (error) {
      console.log(error); // 用来查看报错信息
    }
  }
}
module.exports = BoyService;

         第五步,Controller文件夹中配置一个BoyController来处理,Boys表相关的业务请求。

        文件代码如下:

'use strict';

const { Controller } = require('egg');

class BoysController extends Controller {
  async getBoysInfo() {
    const { ctx } = this;
    try {
      const Boys = await ctx.service.boys.boyService.getAllBoysInfo();
      ctx.body = { Boys };
    } catch (error) {
      console.log(error);
    }
  }
}
module.exports = BoysController;

        第六步,配置路由:在router中新加查询学生信息的路由

        代码如下:     

'use strict';

/**
 * @param {Egg.Application} app - egg application
 */
module.exports = (app) => {
  const { router, controller } = app;
  router.get('/', controller.home.index);
  router.get('/getAllBoys', controller.boys.boysController.getBoysInfo);
};

三.测试

        完成了上述的一系列操作,到了验收的时候。我们先使用 npm run dev 部署服务器     

        打开服务器地址,输入查询学生的接口:

         可以看到我得到了数据库Boys表中的数据,至此Egg框架初始化项目的搭建完成,希望对大家搭建egg框架迷茫时提供一定的帮助。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Donp1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值