简介
KOA-BOOT是基于KOA进行二次封装的框架,旨在实现IOC的理念,并且封装了装饰器简化开发者开发。该框架集成了常用的技术框架,包括Redis和MySQL等。KOA-BOOT能够提供全面的支持,增强程序的灵活性、可维护性和解耦性。借助IOC的思想,开发者可以更便捷地管理和注入对象。装饰器的应用使得开发过程更加简洁高效。
下载&安装
获取项目
git clone https://gitee.com/yutangcun/koa-boot.git
安装依赖
npm install
启动项目
npm run start
装饰器介绍
-
@Component
- 作用域:类
- 参数:无
- 作用:常用用于组件,被标记的类会在项目启动阶段被扫描并且加入至IOC容器中。
-
@Controller
- 作用域:类
- 参数:无
- 作用:常用于控制层,被标记的类会在项目启动阶段被扫描并且加入至IOC容器中。
-
@Service
- 作用域:类
- 参数:无
- 作用:常用于服务层,被标记的类会在项目启动阶段被扫描并且加入至IOC容器中。
-
@Repository
- 作用域:类
- 参数:无
- 作用:常用于模型层,被标记的类会在项目启动阶段被扫描并且加入至IOC容器中。
-
@Autowired
- 作用域:属性
- 参数:无
- 作用:常用于属性注入,被标记的属性在创建类期间对属性进行寻找,找到则进行注入。
-
@RequestMapping
- 作用域:类
- 参数:prefix,对应请求路径的前缀
- 作用:常用于给模块添加具体的请求路径前缀
-
@GetMapping
- 作用域:方法
- 参数:url, 会根据此路径查找对应的方法和AJAX的请求方法映射
- 作用:被标记的方法使用AJAX访问具体的路径的时候执行,对应AJAX的GET方法
-
@PostMapping
- 作用域:方法
- 参数:url, 会根据此路径查找对应的方法和AJAX的请求方法映射
- 作用:被标记的方法使用AJAX访问具体的路径的时候执行,对应AJAX的POST方法
-
@KoaContext
- 作用域:方法参数
- 参数:无
- 作用:把KOA的Context参数注入至指定的参数中
-
@RequestParam
- 作用域:方法参数
- 参数:name. 参数的名称
- 作用:常用于控制层的方法中,被标记的参数会进行属性注入
-
@RequestBody
- 作用域:方法参数
- 参数:无
- 作用:常用于控制层方法中,被标记的方法会进行对象类型的属性注入
配置文件介绍
目前Koa-Boot对配置文件也进行了整合,因时间有限所以整合出来的配置也相对较少,有如下配置
- 服务配置
- 框架配置
- 日志配置
服务配置
服务配置目前只提供端口号配置,如果需要修改端口号则修改以下配置
#服务配置
server:
port: 8082 #服务启动端口号
框架配置
框架配置主要是集成一些中间件的配置(Redis,Mysql)以及部分统一的配置(统一前缀)
# 框架配置
koaBoot:
#项目启动统一前缀
prefix: /api
#Redis配置
redis:
#是否启用Redis true 启用 false 禁用
enable: true
#端口号
port: 6379
#IP地址
host: 127.0.0.1
。默认是空值
#username: root
#密码。默认是控制
password: 123456
#数据库索引值
database: 2
#Mysql配置
mysql:
#是否启用mysql true 启用 false 禁用
enable: true
#IP地址
host: 192.168.100.18
#host: 192.168.1.166
#端口号
port: 3306
#数据库名称
database: iot-system
#数据库账号
username: root
#数据库密码
password: '123456'
#模型目录。级数据库表映射模型所存在的目录
# modelDir: model
#默认配置
default:
#数据库字符集
default: utf8mb4
#是否自动填充
timestamps: true
#创建时间别名,默认 create_time
createdAt: "create_time"
#更新时间别名,默认 update_time
updatedAt: "update_time"
#逻辑删除别名,默认 is_deleted
deletedAt: "is_deleted"
#数据库连接池配置
pool:
#最大连接数 10
max: 10,
#最小连接数
min: 0,
#获取连接的最长等待时间(毫秒),超时后将抛出错误,默认为 30000
acquire: 30000,
#连接空闲时间(毫秒)超过该时间后将被释放,默认为 10000
idle: 10000
日志配置
日志配置主要是框架日志配置的地方,提供可配置化的日志输出形式。
#日志配置
logger:
#根项目日志打印级别
root: INFO
#日志存活时间,超过此时间则删除。单位:天
daysToKeep: 7
#日志存储目录名称
filePath: logs
#日志文件名称
filename: access
#日志文件输出格式
pattern: '-yyyy-MM-dd.log'
#是否压缩日志文件
compress: false
#日志输出样式
layout:
type: 'pattern'
pattern: '[%d{yyyy-MM-dd hh:mm:ss}] [%p] %m'
约定俗成
所谓的约定俗成就是一些规约,一些约定。Koa-Boot框架也有一些约定需要开发者进行遵守。
TS文件的约定
需要加入IOC容器管理的类必须独立在一个TS文件,有且只有一个类对外暴露,文件命名与类名保持一致,遵循大驼峰的规则命名如下示例:
UserController.ts
class UserController {
....
}
export default UserController;
控制层(Controller)方法约定
对于标注这 @Controller 装饰器的类,其方法必须是一个异步方法,并且返回一个 Promise 对如下示例:
class UserController {
@PostMapping("/test")
public async test3(@RequestParam("name") name: string): Promise<User> {
const user = new User();
return user;
}
}
export default UserController;
装饰器使用约定
使用装饰器标注一个类时,请尽量使用寓意表明的对应的装饰器,让代码阅读行提高做到见名知意
静态资源使用约定
静态的资源尽量放入 resource 文件夹中,框架提供了 KoaBootFile 类对此目录下的文件进行操作
结语
只要遵循本文档进行开发,就可以打开优雅开发大门,不再需要关注对象的创建,路由文件的映射,以及静态资源读取问题。全程开发都使用装饰器开发,可谓是优雅至极。