Closed czy88840616 closed 4 years ago
对于复杂场景orm基本没法用,对于简单crud 可手写sql 时 orm 也没啥优势。 那orm到底有啥用呢?
对于复杂场景orm基本没法用,对于简单crud 可手写sql 时 orm 也没啥优势。 那orm到底有啥用呢?
个人感觉:
有一种观点认为,复杂场景下,orm 的产生的 sql,不如手写来的直观便于 review。
- 1、之前的装饰器调整,为了配合未来的 faas/orm 等其他场景
- 2、AOP 能力
- 3、基于 ioc 的插件扩展能力
- 4、其他底层的变动,比如 egg3
- 5、移除 XML
移除 XML 是因为?
@sabakugaara 简单业务,我认为用 query builder(比如 knex ,也支持ts) 和orm具有同样的优势。 复杂业务,越复杂 orm 越没用。至于分界点在哪不知道。。 反正据说 typeORM 不少坑。 另外,typeORM 这些 orm 所具有的表同步更新功能我觉得是个定时炸弹,生产环境谁敢用?
knex 我觉得挺不错,支持主流数据库(ora, ms, pg, mysql, sqllite) 。支持 ts 的类型定义与推导。足以应付简单 crud 场景以及比较复杂场景(三表及以上星型连接) 。 以我粗略浏览几个 orm 包的api文档情况,我是没发现 orm 相对于 query builder 有啥凸出优势。事物管理? 有了解的可否说说。
过年了没注意有讨论...
@Gaara 移除xml支持,是因为ioc原本设计有一部分是跟spring 一样,用xml做配置能力,让js也能用上,不过这个现在用的特别少,内部都转到ts之后,这部分代码就可以移除了。
orm 本身有人喜欢有人不喜欢,但是对于很多小白用户来说会有一定的受众,我们经常被问起如何使用,所以在有资源的情况下,我们会补全这方面能力。不过这个算做是midway的一个插件能力,非必需。
@czy88840616 如果 vscode 配合 ts 实现自动完成,我认为 query builder 和 orm 没啥差别。如果不会 ts 并且不愿意手写 sql 那估计只有依赖 orm 了吧。
可不可以实现在inject的时候,自动导入类型并添加对inject的变量的类型定义
这个可能得配合IDE、插件来做,比如限定vscode。
前期可以集成到cli,就像egg一样,npm run dev的时候自动生成.d.ts,midway可以做成npm run xx的时候自动补全这些定义
新手,Midway2 稳定了吗?我看到版本2已经发布好几次了,但 changelog 里没有提
@xuxucode 现在的 LTS 还是 1,2的改动目前集团也还没上,目前 core 的改动只为了 faas 而修改的。
@czy88840616 好的,那就选择 LTS
等待成为2.0的第一批用户
已经 Release