这是我参与「第四届青训营 」笔记创作活动的第2天
为什么需要egg.js
监控系统不只是搭建页面,而是一个完整的集中后台数据处理,页面展示,数据持久化的一整套完整生态系统。 不只是需要React来提供页面开发。更多的要关注数据的采集以及中后台对数据的处理,数据落库。所以我们需要一套基于nodejs的后端web框架。
egg介绍
egg 是阿里出品的一款 node.js 后端 web 框架,基于 koa 封装,并做了一些约定。4
比较知名的产品比如Yuque就是用egg开发的。
如何创建egg项目
$ npm init egg --type=simple //也可以使用cnpm
$ yarn create egg --type=simple //yarn 也可以
$ npm install // yarn
$ npm run dev // yarn run dev
打开 http://127.0.0.1:7001/ 会看到网页上显示 hi, egg 。即初始化成功
如何使用egg集成数据库
sequelize插件
比较好的集成 MySQL 的方式是借助 ORM 框架来帮助我们管理数据层的代码,sequelize 是当前最流行的 ORM 框架,它支持 MySQL、PostgreSQL、SQLite 和 MSSQL 等多个数据源,接下来我们使用 sequelize 来连接 MySQL 数据库,首先安装依赖:
$ npm install --save egg-sequelize mysql2
$ yarn add egg-sequelize mysql2
- 在
config/plugin.js中引入 egg-sequelize 插件
exports.sequelize = {
enable: true,
package: 'egg-sequelize',
};
- 在
config/config.default.js中编写 sequelize 配置
exports.sequelize = {
dialect: 'mysql',
host: '127.0.0.1',
port: 3306,
database: 'egg-sequelize-doc-default',
};
我们可以在不同的环境配置中配置不同的数据源地址,用于区分不同环境使用的数据库,例如我们可以新建一个 config/config.unittest.js 配置文件,写入如下配置,将单测时连接的数据库指向 egg-sequelize-doc-unittest。
exports.sequelize = {
dialect: 'mysql',
host: '127.0.0.1',
port: 3306,
database: 'egg-sequelize-doc-unittest',
};
完成上面的配置之后,一个使用 sequelize 的项目就初始化完成了。
项目目录结构
最后记一下一个典型的 egg 项目的目录结构吧:
egg-project
├── package.json
├── app.js (可选)
├── agent.js (可选)
├── app
| ├── router.js
│ ├── controller
│ | └── home.js
│ ├── service (可选)
│ | └── user.js
│ ├── middleware (可选)
│ | └── response_time.js
│ ├── schedule (可选)
│ | └── my_task.js
│ ├── public (可选)
│ | └── reset.css
│ ├── view (可选)
│ | └── home.tpl
│ └── extend (可选)
│ ├── helper.js (可选)
│ ├── request.js (可选)
│ ├── response.js (可选)
│ ├── context.js (可选)
│ ├── application.js (可选)
│ └── agent.js (可选)
├── config
| ├── plugin.js
| ├── config.default.js
│ ├── config.prod.js
| ├── config.test.js (可选)
| ├── config.local.js (可选)
| └── config.unittest.js (可选)
└── test
├── middleware
| └── response_time.test.js
└── controller
└── home.test.js
更多的信息可以参考egg.js官网