新框架新概念层出不穷,业务总逃不过 CRUD 。与其加一层又一层抽象,或者是生成再同步代码,是不是可以换一个角度,直接处理数据库定义、前后端、和 API 文档之间的同步问题?
在解决完前后端的类型同步问题以后,结合最近的项目实践,我想干脆更进一步:
在 TypeScript 里写 SQL ,然后即可得到四个东西:
- 数据库初始化工具
- RESTful API 服务( CRUD API 开箱即用,深度定制也没问题)
- 类型安全的 JS 客户端(基于 fetch ,并且能自动推导所有 API 的入参和出参)
- 动态生成的 OpenAPI 接口
没有代码生成,没有同步时间 - 改一改 SQL ,上述四项就会同步变化,让 VSCode 的 IntelliSense 为你工作就行。
所有组件都是解耦的,比如可以只用路由和客户端,服务器用 Koa/Express/Next 应该都没问题。
字有点多,来张图吧:

⬇️ 项目地址
https://github.com/withtyped/withtyped
自己试了试感觉开发效率有所提升,欢迎大家拍砖讨论