# 7、eggjs - 基于Koa定制自己的企业级三层框架

# 课程目标

  • 如何实现一个「约定优于配置」的框架
  • 在函数式编程中完成传值操作,就是进行「柯里化变换」

router.js: eggjs的三层结构:controller.js => service.js => model.js

# Egg.js体验

# 创建项目
npm i egg-init -g
egg-init egg --type=simple
cd egg-example
npm i

# 启动项目
npm run dev
open localhost:7001

约定优于配置(convention over configuration),也称作 「按约定编程」是一种软件设计范式,旨在减少软件开发人员需做决定的数量,简单又不失灵活。

# 数据层

创建模型层:以mysql + sequelize为例演示数据持久化

npm install --save egg-sequelize mysql2

在 config/plugin.js 中引入 egg-sequelize 插件(在eggjs中,所有功能都是以插件的形式存在的):

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

在 config/config.default.js 中编写 sequelize 配置:

  const userConfig = {
    // myAppName: 'egg',
    sequelize: {
      dialect: 'mysql',
      host: '127.0.0.1',
      port: 3306,
      username: 'root',
      password: 'example',
      database: 'kaikeba',
    },
  };

# 实现一个MVC框架

进行很多柯里化变换,只为把值传进去。

为了传入参数app,而升阶,把对象改成函数。

中间件的加载,不宜使用「约定优于配置」这种思路,因为中间件是有顺序的,还是需要自己配置来控制

Last Updated: 8/23/2020, 8:36:43 PM