1.首先在编辑器的终端里面,通过脚手架创建基于egg的项目:
mkdir egg-example && cd egg-example
npm init egg --type=simple
npm i
2.编写Controller:
如果你熟悉 Web 开发或 MVC,肯定猜到我们第一步需要编写的是 Controller 和 Router
//app/controller/user.js 文件路劲
const Controller = require('egg').Controller;
class UserController extends Controller {
async info(params) {
const ctx = this.ctx;
const userId = ctx.params.id;
const user = await ctx.service.user.find(userId);
ctx.body = user;
}
}
module.exports = UserController
配置路由的映射:
//app/router.js 文件路劲
module.exports = app => {
const { router, controller } = app;
router.get('/', controller.home.index);
router.get('/user/:id', controller.user.info);
};
“/”,"/user"表示客户端访问里面的路径时,会去调用对应的Controller中的异步函数。
3.编写service层,egg官方建议我们在数据的处理层放在业务逻辑层。
const Service = require('egg').Service;
class UserService extends Service {
async find(uid) {
const post = await this.app.mysql.get('rf_common_menu', { id: uid });
return { post };
}
}
module.exports = UserService
当前端发送请求时会调用Controller中的方法,Controller中主要工作是接受用户的参数并进行处理,然后将处理好的参数发送给Service层,然后把Service的结果返回给用户。
接下来就是egg如何连接mysql数据库的基本步骤:
1.首先我们安装egg官方的egg-mysql插件来访问数据库 ,这个插件既可以访问普通的 MySQL 数据库,也可以访问基于 MySQL 协议的在线数据库服务。
npm i --save egg-mysql
2.然后创建一个文件用来存放开启插件配置
// config/plugin.js
exports.mysql = {
enable: true,
package: 'egg-mysql',
};
注意:这里的插件开启一定注意实在这个文件中进行配置,也不要忘记插件也要开启,不然就会有些 xxx is not undefined错误!
3.创建连接数据库的配置源:
exports.mysql = {
// 单数据库信息配置
client: {
// host
host: '127.0.0.1',
// 端口号
port: '3306',
// 用户名
user: 'root',
// 密码
password: 'admin123',
// 数据库名
database: 'rfshopping',
},
// 是否加载到 app 上,默认开启
app: true,
// 是否加载到 agent 上,默认关闭
agent: false,
};
这个数据可以配置多个也可以动态配置。具体的实现可以去egg官方文档配置egg官方文档