摘要:前言本系列文章是学习过程的一个记录初步目标是写一个个人博客会尽可能多使用中提供的各种功能本文全部使用请确保版本足够支持文中有不正确地方请指正地址文档初始化项目使用脚手架初始化项目选择初始化项目的类型项目目录结构自定义启动时
前言
本系列文章是Egg学习过程的一个记录,初步目标是写一个个人博客,会尽可能多使用Egg中提供的各种功能.
本文全部使用 async 请确保Node版本足够支持.
文中有不正确地方请指正.
GitHub地址: https://github.com/devil5263/...
Egg文档: https://eggjs.org/zh-cn/intro/
使用Egg脚手架初始化项目
$ npm instal egg-init -g $ egg-init egg-example --type=simple // 选择初始化项目的类型 $ cd egg-example $ npm install
项目目录结构
egg-project
├── package.json
├── app.js //自定义启动时的初始化工作
├── app
| ├── router.js // 配置 URL 路由规则
│ ├── controller // 控制层
│ | └── auth.js // 业务逻辑-注册登录实现
│ ├── service // 业务逻辑层
│ | └── auth.js // 业务逻辑-注册登录实现
| ├── model // 数据库表结构
│ | └── user.js // 业务逻辑-user表
│ ├── 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 // 前端资源
| ├── components // 前端组件
│ └── pages // 前端页面
| └── page1 // 某一页面
| ├── app.vue // vue单文件组件
| ├── index.js // vue入口文件
| ├── index.html // html页面
| └── js (可选) // store/router js文件
└── test // 初始化-单元测试用例
├── middleware
| └── response_time.test.js
└── controller
└── home.test.js
MySQL配置
这里使用了两个Egg的插件
egg-mysql 用于连接MySQL(需要npm install egg-mysql)
egg-sequelize 用于定义model进行db层操作(需要安装egg-sequelize和mysql2两个库)
数据库配置
// {work_dir}/config/config.default.js
const database = "egg"; // 数据库名字
module.exports = appInfo => {
const config = {};
config.keys = appInfo.name + "_1501817502166_7037";
config.sequelize = { // egg-sequelize 配置
dialect: "mysql", // db type
database: database,
host: "localhost",
port: "3306",
username: "root",
password: ""
};
return config;
};
插件配置
// {work_dir}/config/plugin.js
exports.sequelize = {
enable: true,
package: "egg-sequelize"
};
启动时创建数据库表
// {work_dir}/app.js
module.exports = app => {
app.beforeStart(async function () {
await app.model.sync({ force: true });
});
};
定义model
// {work_dir}/app/model/user.js
module.exports = app => {
const { STRING, INTEGER, DATE } = app.Sequelize;
const User = 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
});
return User;
};
目前为止,egg-example项目已初始化并添加了MySQL配置,成功启动后会发现数据库中已经有了定义的 model User
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/84754.html
摘要:因为平常开发都是前后端分离的模式,就想着使用创建后台服务,写一套接口配合其他的项目。复杂数据的处理,比如要展现的信息需要从数据库获取或者是第三方服务的调用。更新用户信息用户信息已更改一个简单的应用结构就是这样,如此便实现了用负责接口服务。 写在前面的话 最近在学习Egg.js,它是阿里推出的基于Koa的node开发框架,为企业级框架和应用而生。Egg.js 的官方文档已经很完善了,想学...
摘要:因为平常开发都是前后端分离的模式,就想着使用创建后台服务,写一套接口配合其他的项目。复杂数据的处理,比如要展现的信息需要从数据库获取或者是第三方服务的调用。更新用户信息用户信息已更改一个简单的应用结构就是这样,如此便实现了用负责接口服务。 写在前面的话 最近在学习Egg.js,它是阿里推出的基于Koa的node开发框架,为企业级框架和应用而生。Egg.js 的官方文档已经很完善了,想学...
摘要:不幸的是,在软件包管理十分混乱,至少历史上十分混乱。的最大改进是将函数的参数单独放到一个的文件中这些成为包的元数据。基于的版本号管理。的版本推导这里重点说明一下基于的版本号管理这个功能。开发版本号的形式如下。 为什么写这个系列 OpenStack是目前我所知的最大最复杂的基于Python项目。整个OpenStack项目包含了数十个主要的子项目,每个子项目所用到的库也不尽相同。因此,对于...
摘要:编写在文件夹下添加,文件这里用于获取数据库中的数据添加路由确保数据库能连接成功后,便可以启动项目。本文只是辅助介绍快速搭建一个基本的项目,具体内容请参考若有疑问或错误,请留言,谢谢 2018-08,本文适用于对egg有兴趣想要了解的同学完整项目代码:https://github.com/NameHewei/node-egg 项目主要文件目录结构 |—— app |—— con...
摘要:是什么是一款顶级全栈开发框架。渐进式开发由于模块的高度内聚,可以将业务以模块的形式沉淀,在多个项目中重复使用,既可贡献到开源社区,也可部署到公司内部私有仓库。模块发布当项目中的模块代码稳定后,可以将模块公开发布,贡献到开源社区。 EggBorn.js是什么 EggBorn.js是一款顶级Javascript全栈开发框架。 EggBorn.js是采用Javascript进行全栈开发的最佳...
阅读 3257·2021-09-22 15:54
阅读 2113·2019-08-30 15:53
阅读 2517·2019-08-29 16:33
阅读 1610·2019-08-29 12:29
阅读 1587·2019-08-26 11:41
阅读 2636·2019-08-26 11:34
阅读 3253·2019-08-23 16:12
阅读 1587·2019-08-23 15:56