新框架新概念层出不穷,业务总逃不过 CRUD 。与其加一层又一层抽象,或者是生成再同步代码,是不是可以换一个角度,直接处理数据库定义、前后端、和 API 文档之间的同步问题?
在解决完前后端的类型同步问题以后,结合最近的项目实践,我想干脆更进一步:
在 TypeScript 里写 SQL ,然后即可得到四个东西:
没有代码生成,没有同步时间 - 改一改 SQL ,上述四项就会同步变化,让 VSCode 的 IntelliSense 为你工作就行。
所有组件都是解耦的,比如可以只用路由和客户端,服务器用 Koa/Express/Next 应该都没问题。
字有点多,来张图吧:
⬇️ 项目地址
https://github.com/withtyped/withtyped
自己试了试感觉开发效率有所提升,欢迎大家拍砖讨论
1
reorx 2022-12-12 12:43:14 +08:00 via iPhone
好想法!不过很多人对 SQL 不熟悉,因此喜欢用 ORM 作为 single source of truth ,这也是为什么 prisma 这种库流行的原因。OP 可以考虑把 createModel 再开放一个 ORM 的接口或者接受流行 ORM 库的定义
|
2
pseudo OP @reorx #1 谢谢。我觉得你说的很有道理,但我们 stay with native SQL 其实就是想利用好 DB 的特性。如果 createModel 变成了 ORM 感觉就有点重复造轮子了?
准备先在真实项目里实践一下试试效果,不错的话我再写一篇文章展开一下这个 approach |
3
reorx 2022-12-30 18:20:29 +08:00
用 SQL 作为 SSoT 也很好,而且因为 SQL 不被语言所限制,乱开个脑洞,未来可以做成能够构建出各种主流语言的 ORM 和脚手架,这样前后端的数据(库)定义就可以非常便捷的统一了
|