Skip to content

开发规范


命名规范

请尽量遵循以下命名规范,可以减少在开发过程中出现不必要的错误。

目录和文件


项目中所有的目录名称都可以自行修改,但是需要修改 config/app.ts 文件

export default {
    app: {
        port: 5985, // 项目启动端口
        koaBody: {
            multipart: true // 支持multipart-formdate表单,可用于文件上传
        },
        enableLog: false, // 是否开启日志
        log_info_filename: 'logs/all-logs.log',
        log_error_filename: 'logs/log',
        log_error_pattern: 'yyy-MM-dd.log',
        route_path: 'route', // 默认路由文件目录地址 
        controller_path: 'app/controller', // 默认控制器文件目录地址 
        middleware_path: 'app/middleware', // 默认中间件文件目录地址 
        view_path: 'app/views', // 默认视图目录地址 
        static_path: 'public', // 默认静态资源目录地址 
        validate_path: 'app/validate', // 默认验证器目录地址 
        utils_path: 'utils', // 默认公共函数目录地址 
        model_path: 'app/service', // 默认模型目录地址 
        jwt_key: 'ThinkTS', // JWT加密的密钥
        expiresIn: 60 * 60, // JWT过期时间
        sqlDebug: false, // 全局SQL调试,开启后执行所有的SQL都会在控制台打印
        createTime: 'create_time', // 数据库全局创建时间
        updateTime: 'update_time', // 数据库全局更新时间
        deleteTime: 'delete_time', // 数据库全局软删除时间
    },
    ws: {
        enable: false, // 是否开启websocket,默认不开启
        port: 2346,
        websocket_path: 'websocket/ws', // websocket文件地址 
    }
}
export default {
    app: {
        port: 5985, // 项目启动端口
        koaBody: {
            multipart: true // 支持multipart-formdate表单,可用于文件上传
        },
        enableLog: false, // 是否开启日志
        log_info_filename: 'logs/all-logs.log',
        log_error_filename: 'logs/log',
        log_error_pattern: 'yyy-MM-dd.log',
        route_path: 'route', // 默认路由文件目录地址 
        controller_path: 'app/controller', // 默认控制器文件目录地址 
        middleware_path: 'app/middleware', // 默认中间件文件目录地址 
        view_path: 'app/views', // 默认视图目录地址 
        static_path: 'public', // 默认静态资源目录地址 
        validate_path: 'app/validate', // 默认验证器目录地址 
        utils_path: 'utils', // 默认公共函数目录地址 
        model_path: 'app/service', // 默认模型目录地址 
        jwt_key: 'ThinkTS', // JWT加密的密钥
        expiresIn: 60 * 60, // JWT过期时间
        sqlDebug: false, // 全局SQL调试,开启后执行所有的SQL都会在控制台打印
        createTime: 'create_time', // 数据库全局创建时间
        updateTime: 'update_time', // 数据库全局更新时间
        deleteTime: 'delete_time', // 数据库全局软删除时间
    },
    ws: {
        enable: false, // 是否开启websocket,默认不开启
        port: 2346,
        websocket_path: 'websocket/ws', // websocket文件地址 
    }
}

  • controller 目录下的文件名可随意命名,也支持分级

注意用了分级后路由里的地址一定要写对 如: route.get('/hello', 'a/b/c/sayHello')


  • middleware 目录下的文件名可随意命名,也支持分级

注意引用时路径一定要写对
如: import checkLogin from '../app/middleware/a/b/checkLogin'


  • service 目录下的文件名可随意命名,也支持分级

注意引用时路径一定要写对
如: M('a/b/c/hello')


  • validate 目录下的文件名可随意命名,也支持分级

注意默认需要和控制器路径保持一致,如果不想一致可以通过第三个参数来改变
如:GetParams(ctx, true, 'a/b/c/hello')


  • views 目录下的文件名可随意命名,也支持分级

但是必须为 .vue.tsx 文件


  • route 目录下的文件名可随意命名,也支持分级

注意不要重复定义


  • cert 目录下的文件名可随意命名,也支持分级

注意 config.ts 中引用时路径不要写错


  • logs 日志的输出目录,给予写权限
  • public 静态资源目录

  • utils 目录下的文件名可随意命名,也支持分级

最终都会把方法合并起来,但是注意重复定义会覆盖


  • config 目录下的文件名可随意命名,也支持分级,但内部配置名称有要求

目前规定有 app ws mysql redis mongodb elasticsearch
alicloud alipay wechat miniProgram wxpay
重复定义会覆盖


类与函数


  • 开发过程中最好使用 think-ts-cli create 命令创建模版代码,这样对照着修改会减少出错
  • 控制器方法需要根据实际情况来变为同步 async await,如: 数据库查询动作就必须要用 await Db() 来得到结果
  • 验证器中 rule message scene 三个属性名称为固定格式,不可修改
  • controllerservice 中导出必须为类
  • middlewareroute 中导出必须为函数
  • validate config utils 中导出都为对象

错误码


  • 10000 代码规范类错误,如:控制器return的不是一个对象类型
  • 20000 配置类错误,如:没有正确配置路由
  • 30000 一般为业务逻辑主动抛出的错误,如:验证参数的错误
  • 30001 TOKEN校验错误
  • 42000 mysql数据库错误
  • 50000 redis错误
  • 60000 elasticsearch错误
  • 70000 MongoDB错误
  • 80000 视图错误
  • 90000 utils工具函数加载错误
  • 91000 模型错误

think-ts-lib 共导出如下模块


备案号:冀ICP备20015584号-2