前言本系列文章是对Egg学习过程的记录。最初的目标是写个人博客,尽可能多的使用Egg的功能。本文全部使用异步。请确保Node版本得到足够的支持。文中如有不妥之处,请指正。GitHub地址:https://github.com/devil5263/...Egg文档:https://eggjs.org/zh-cn/intro/初始化项目使用Egg脚手架初始化项目$npminstalegg-init-g$egg-initegg-example--type=simple//选择初始化项目的类型$cdegg-example$npminstallprojectdirectorystructureegg-project├──package.json├──app.js//自定义启动├──app|├──router.js//配置URL路由规则│├──controller//控制层│|└──auth.js//业务逻辑-注册登录实现│├──service//业务逻辑层│|└──auth.js//业务逻辑-注册登录实现|├──模型//数据库表结构│|└──user.js//业务逻辑-用户表│├──middleware//中间件│├──schedule//任务│└──extend//框架扩展├──config//初始化-所有配置文件|├──plugin.js|├──config.default.js│├──config.prod.js|├──config.test.js(可选)|├──config.local.js(可选)|└──config.unittest.js(可选)├──build//前端webpack打包配置|├──webpack.base.js|├──webpack.dev.js|└──webpack.prod.js├──resource//前端源文件|├──assets//前端资源|├──组件//前端组件│└──pages//前端页面|└──page1//某页|├──app.vue//vue单文件组件|├──index.js//vue入口文件|├──index.html//html页面|└──js(optional)//store/routerjs文件└──test//initialization-unittestcase├──middleware|└──response_time.test.js└──controller└──home.test.jsMySQL配置使用两个Egg插件egg-mysql连接MySQL(需要npminstallegg-mysql)egg-sequelize用于定义模型对于db层操作(需要安装egg-sequelize和mysql2库)数据库配置//{work_dir}/config/config.default.jsconstdatabase="egg";//数据库名称module.exports=appInfo=>{constconfig={};config.keys=appInfo.name+"_1501817502166_7037";config.sequelize={//egg-sequelize配置dialect:"mysql",//dbtypedatabase:database,host:"localhost",port:"3306",username:"root",password:""};返回配置;};插件配置//{work_dir}/config/plugin.jsexports.sequelize={enable:true,package:"egg-sequelize"};在启动时创建数据库表//{work_dir}/app.jsmodule.exportts=app=>{app.beforeStart(asyncfunction(){awaitapp.model.sync({force:true});});};定义模型//{work_dir}/app/model/user.jsmodule。exports=app=>{const{STRING,INTEGER,DATE}=app.Sequelize;constUser=app.model.define("user",{login:STRING,id:{type:INTEGER,primaryKey:true,autoIncrement:true},name:STRING(30),password:STRING(32),age:INTEGER,last_sign_in_at:DATE,created_at:DATE,updated_at:DATE});返回用户;};至此,egg-example项目已经完成初始化并添加了MySQL配置,启动成功后,会发现数据库中已经有一个定义好的modelUser
