基于koa2封装的node后台框架,一个强大、简单、粗暴、易用、自由、便捷的node框架。
搭建一个强大、简单、粗暴、易用、自由、便捷的node 后台框架。
拥有后台通用的mvc目录结构,舍弃egg繁琐的debug方式、约束、底层封装、第三方扩展插件再次封装、部署等缺点。
如果egg是企业级,那么我这个就是专属mysql的个人级后台。
node: v10.13.0 以上
pm2: v4.2.3 以上
nodemon:测试环境下,数据库分表暂且有个bug,不影响线上操作
1、bin文件
程序启动的地方
2、config配置文件
mysql、redis、图片前缀等配置
3、controller控制器(不需要注明路由,文件名对应url路由名)
module.exports = {
page: page,
method: "get", // 请求方式 get请求,post请求,all请求(全部请求)
before: [], // 存放中间件
after: []
}
4、core文件夹(最好不要去更改它,本架构的最核心之处)
实现了本架构的功能
4.1、定义了ctx.tool
4.2、定义了ctx.params获取参数的方法,(icefire/getParams.js)
4.3、页面报错拦截、输出并log打印的功能(icefire/onerror.js)
4.4、控制器文件名对应路由名的功能(routeEach.js)
4.5、log日志打印输出切割功能(logger.js)
4.6、mysql数据库连接并定义到ctx.db(db.js)
4.7、redis连接功能并定义到ctx.redis(redis)
4.8、service对应service方法的实现功能
5、extend文件
contenxt.js定义了一些常用的方法 支持this.ctx
6、logs日志文件
存放程序log日志
7、middlewares中间件
8、models数据库模型
mysql数据库模型,通过`node auto`生成
9、public静态文件
静态图片、静态js、静态css存放的地方
10、service服务层
专门写业务代码
service下不支持多个文件夹嵌套
11、sql文件
本示例代码的sql文件
12、tool工具
封装了常用的工具方法
使用方式 ctx.tool
13、views视图层
这里采用的是pug语法,
若想用ejs语法的话,可去app.js里更改成ejs语法
14、app.js
本程序的开始
15、auto.js
生成模型的方法
16、schedule文件夹
是定时任务,first.js是定时任务模板
用的是node-schedule插件
ctx.db.(数据库表名,首字母大写).findAll 采用的是sequelize库。
ctx.redis.对象名.方法 redis方法
ctx.tool 工具类方法
ctx.success extend文件夹内定义的
ctx.error extend文件夹内定义的
ctx.toJSON extend文件夹内定义的
config文件夹下的sql.js
stepCount属性:在subTable为true下有用
水平分表是当表的自增长id大于多少时则分表,默认是百万。
stepCount是为了自定义每张表自增长id大于多少时分表,
注:正式开发时把user去掉。
timestamp属性:这个参数为true是MySQL会自动给每条数据添加createdAt和updateAt字段。createdAt和updateAt需要我们自己在新建表时定义(sequelize的字段)
paranoid属性:设置 deletedAt 字段,当删除一条记录的时候,并不是真的销毁记录,而是通过该字段来标示,即保留数据,进行假删除,默认为false 仅在timestamp启用下使用。 deletedAt需要我们自己在新建表时定义(sequelize的字段)
0、环境配置
将sql文件夹下的sql文件导入到mysql的timotest表里。
配置好config文件夹下的mysql和redis文件
1、下载依赖
yarn
2、生成模型
yarn model
yarn dev
yarn model
pm2 start bin/api
# 普通页面测试地址请求
http://localhost:3001/api/base/test/
http://localhost:3001/api/base/test/index2
http://localhost:3001/api/base/test/index3
http://localhost:3001/api/base/test/index4
# mysql测试页面地址请求
#### 增
http://localhost:3001/api/base/test/dbInsert?name=冰火&age=15&sex=1
#### 查
http://localhost:3001/api/base/test/dbFindAndCountAll
http://localhost:3001/api/base/test/dbFindAll
http://localhost:3001/api/base/test/dbFindOne?id=2
#### 改
http://localhost:3001/api/base/test/dbUpdate?id=2&name=冰火
#### 删
http://localhost:3001/api/base/test/dbDel?id=2
http://localhost:3001/api/base/test/dbDel?name=%E9%BB%98%E8%AE%A4
# redis请求地址
http://localhost:3001/api/base/test/redisInsert
http://localhost:3001/api/base/test/redisGet
/*
* code
* 1000 请求接口成功
* 1002 提示错误信息,前端直接显示报错信息
* 1003 token验证失败,前端直接跳转到登录页
* 1004 权限不够,前端直接跳转到首页
* */
{
"code": 1000,
"data": "冰火,欢迎你来到我的冰火世界,你的名字,我是从中间件里获取的"
}
{
"code": 1002,
"msg": "500,未知错误,请复制错误码1585724000253联系我们"
}
{
"code": 1003,
"msg": "登录信息失效,请重新登录"
}
{
"code": 1004,
"msg": "你没有该权限"
}