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