轻量级IOC框架Koa-Boot使用教程

289 阅读5分钟

简介

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 类对此目录下的文件进行操作

结语

只要遵循本文档进行开发,就可以打开优雅开发大门,不再需要关注对象的创建,路由文件的映射,以及静态资源读取问题。全程开发都使用装饰器开发,可谓是优雅至极。

相关链接

KoaBoot框架的问世

KoaBoot框架的进步