Version 0.7.0
lessgo v0.7版对框架内部做出大量更新与优化,降低gc时间与内存占用,显著提升性能与稳定性:
一、Context相关更新:
- 移除Context接口封装并精简多个字段;
- 移除Request结构体二次封装;
- 优化Bind,增加bindForm()对ptr和struct类型的安全判断;
- 优化文件缓存功能;
- Context.JSONMsg()和Context.JSONPMsg()在参数info为nil时,输出的json忽略info字段。
二、路由更新:
- 路由改用知名的httprouter,提升路由稳定性(性能与原来的echo路由保持相当水平);
- 虚拟路由信息改用配置文件存储,不依赖数据库更加便携;
- 路由URL按照字母排序,在swagger自动API文档中呈现时更清晰整洁;
- 系统预注册的路由信息均统一采用和项目中一致的方法注册,便于统一管理与维护;
- 新增支持自由注册静态路由。
三、操作与中间件更新:
- ApiHandler.Method支持 "GET|POST" 或 "GET POST" 形式的多方法注册,当发生冲突时 WS > GET > *
- ApiHandler和ApiMiddleware统一只保留Reg()方法用于注册自身
- ApiMiddleware完美支持参数动态配置
四、扩展包更新:
- lessgoext扩展包增加uuid、barcode(生成各种条码)、otp(TOTP/HOTP);
- 将cache、token算法、dbservice以及一些通用工具均移至lessgoext扩展包;
- 其中dbservice同时支持xorm和gorm两种流行的数据库通用引擎。
五、其他优化更新:
- 调整项目组织目录,model模块与handler分离,文件名采用全小写;
- 框架内部凡涉及string与[]bytes类型互转的代码,尽量采用底层指针转换的方式进行,转换效率提升百倍以上;
- 允许配置文件中log::asyncchan配置为0;
- 精简代码,提高代码可读性。