1.创建egg项目脚手架
npm init egg --type=simple
npm i
npm run dev
2.项目目录介绍
egg
├── 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
如上,由框架约定的目录:
app/router.js 用于配置 URL 路由规则,具体参见 Router。
app/controller/** 用于解析用户的输入,处理后返回相应的结果,具体参见 Controller。
app/service/** 用于编写业务逻辑层,可选,建议使用,具体参见 Service。
app/middleware/** 用于编写中间件,可选,具体参见 Middleware。
app/public/** 用于放置静态资源,可选,具体参见内置插件 egg-static。
app/extend/** 用于框架的扩展,可选,具体参见框架扩展。
config/config.{env}.js 用于编写配置文件,具体参见配置。
config/plugin.js 用于配置需要加载的插件,具体参见插件。
test/** 用于单元测试,具体参见单元测试。
app.js 和 agent.js 用于自定义启动时的初始化工作,可选,具体参见启动自定义。关于agent.js的作用参见Agent机制。
由内置插件约定的目录:
app/public/** 用于放置静态资源,可选,具体参见内置插件 egg-static。
app/schedule/** 用于定时任务,可选,具体参见定时任务。
若需自定义自己的目录规范,参见 Loader API
app/view/** 用于放置模板文件,可选,由模板插件约定,具体参见模板渲染。
app/model/** 用于放置领域模型,可选,由领域类相关插件约定,如 egg-sequelize。
3.输入一个helloworld
在app>controller 目录下建立你的第一个控制器 index.js
'use strict';
const Controller = require('egg').Controller;
class index extends Controller {
async index() {
ctx.body ='hello,world';
}
}
module.exports =index;
在app>router.js中配置上
'use strict';
/**
* @param {Egg.Application} app - egg application
*/
module.exports = app => {
const { router, controller} = app;
router.get('/', controller.index.index);
};
npm run dev 启动项目 浏览器 localhost:7001 即可访问
4.连接数据库
安装egg-mysql
npm i --save egg-mysql
在config>plugin.js 开启插件
// config/plugin.js
exports.mysql = {
enable: true,
package: 'egg-mysql',
};
在config>config.default.js 中配置sql
// config/config.${env}.js
/* eslint valid-jsdoc: "off" */
'use strict';
/**
* @param {Egg.EggAppInfo} appInfo app info
*/
module.exports = appInfo => {
/**
* built-in config
* @type {Egg.EggAppConfig}
**/
const config = exports = {};
config.mysql = {
client: {
// host
host: 'localhost',
// 端口号
port: '3306',
// 用户名
user: 'root',
// 密码
password: 'root',
// 数据库名
database: 'node_blog',
},
// 是否加载到 app 上,默认开启
app: true,
// 是否加载到 agent 上,默认关闭
agent: false,
};
// add your user config here
const userConfig = {
// myAppName: 'egg',
};
return {
...config,
...userConfig,
};
};
在控制器中使用数据库(增删改查)
回到刚刚创建的index.js(app>controller>index.js) 中
// app/controller/index.js
'use strict';
const Controller = require('egg').Controller;
class index extends Controller {
async index() {
// 假如 我们拿到用户 id 从数据库获取用户详细信息
const user = await this.app.mysql.get('users', { id: 11 });
//查询全部
const whole = await this.app.mysql.select('users');
// 插入
const insert = await this.app.mysql.insert('users', {name: '小名' }); // 在 post 表中,插入 name为 小名的记录
// 修改数据,将会根据主键 ID 查找,并更新
const row = {id:10,name:'法外狂徒张三'};
const result = await this.app.mysql.update('users',{...row}); // 更新 users 表中的记录
//删除users表中 name为 '法外狂徒张三' 的数据库记录
const Delete = await this.app.mysql.delete('users', {
name:'法外狂徒张三',
});
//你也可以直接使用sql语法
const postId = 1;
const wholesql = await this.app.mysql.query('SELECT * FROM `users`');
ctx.body =user;
}
}
module.exports =index;
egg官网地址:https://eggjs.org/zh-cn/basics/structure.html
有任何疑问请在下方评论
后续…
登录 token验证 中间件的使用
阿里云 oss
上传图片
邮箱登录
等.....