开发规范
命名规范
请尽量遵循以下命名规范,可以减少在开发过程中出现不必要的错误。
目录和文件
项目中所有的目录名称都可以自行修改,但是需要修改 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目录下的文件名可随意命名,也支持分级,但内部配置名称有要求
目前规定有
appwsmysqlredismongodbelasticsearchalicloudalipayminiProgramwxpay
重复定义会覆盖
类与函数
- 开发过程中最好使用
think-ts-cli create命令创建模版代码,这样对照着修改会减少出错 - 控制器方法需要根据实际情况来变为同步
async await,如: 数据库查询动作就必须要用await Db()来得到结果 - 验证器中
rulemessagescene三个属性名称为固定格式,不可修改 controller和service中导出必须为类middleware和route中导出必须为函数validateconfigutils中导出都为对象
错误码
10000代码规范类错误,如:控制器return的不是一个对象类型20000配置类错误,如:没有正确配置路由30000一般为业务逻辑主动抛出的错误,如:验证参数的错误30001TOKEN校验错误42000mysql数据库错误50000redis错误60000elasticsearch错误70000MongoDB错误80000视图错误90000utils工具函数加载错误91000模型错误