midwayjs / midway

🍔 A Node.js Serverless Framework for front-end/full-stack developers. Build the application for next decade. Works on AWS, Alibaba Cloud, Tencent Cloud and traditional VM/Container. Super easy integrate with React and Vue. 🌈
https://www.midwayjs.org/
MIT License
7.4k stars 577 forks source link

Midway2 #378

Closed czy88840616 closed 4 years ago

czy88840616 commented 4 years ago
waitingsong commented 4 years ago

对于复杂场景orm基本没法用,对于简单crud 可手写sql 时 orm 也没啥优势。 那orm到底有啥用呢?

sabakugaara commented 4 years ago

对于复杂场景orm基本没法用,对于简单crud 可手写sql 时 orm 也没啥优势。 那orm到底有啥用呢?

个人感觉:

  1. 简单场景下,orm 比手写 sql 更快,而且提供更好的安全包装
  2. 复杂场景要看多复杂,比较完善的 orm 库,例如 typescript ,提供了事物、一对多多对多等多模型间的关系定义。也能简化很多

有一种观点认为,复杂场景下,orm 的产生的 sql,不如手写来的直观便于 review。

sabakugaara commented 4 years ago
  • 1、之前的装饰器调整,为了配合未来的 faas/orm 等其他场景
  • 2、AOP 能力
  • 3、基于 ioc 的插件扩展能力
  • 4、其他底层的变动,比如 egg3
  • 5、移除 XML

移除 XML 是因为?

waitingsong commented 4 years ago

@sabakugaara 简单业务,我认为用 query builder(比如 knex ,也支持ts) 和orm具有同样的优势。 复杂业务,越复杂 orm 越没用。至于分界点在哪不知道。。 反正据说 typeORM 不少坑。 另外,typeORM 这些 orm 所具有的表同步更新功能我觉得是个定时炸弹,生产环境谁敢用?

waitingsong commented 4 years ago

knex 我觉得挺不错,支持主流数据库(ora, ms, pg, mysql, sqllite) 。支持 ts 的类型定义与推导。足以应付简单 crud 场景以及比较复杂场景(三表及以上星型连接) 。 以我粗略浏览几个 orm 包的api文档情况,我是没发现 orm 相对于 query builder 有啥凸出优势。事物管理? 有了解的可否说说。

czy88840616 commented 4 years ago

过年了没注意有讨论...

@Gaara 移除xml支持,是因为ioc原本设计有一部分是跟spring 一样,用xml做配置能力,让js也能用上,不过这个现在用的特别少,内部都转到ts之后,这部分代码就可以移除了。

orm 本身有人喜欢有人不喜欢,但是对于很多小白用户来说会有一定的受众,我们经常被问起如何使用,所以在有资源的情况下,我们会补全这方面能力。不过这个算做是midway的一个插件能力,非必需。

waitingsong commented 4 years ago

@czy88840616 如果 vscode 配合 ts 实现自动完成,我认为 query builder 和 orm 没啥差别。如果不会 ts 并且不愿意手写 sql 那估计只有依赖 orm 了吧。

yuu2lee4 commented 4 years ago

可不可以实现在inject的时候,自动导入类型并添加对inject的变量的类型定义

czy88840616 commented 4 years ago

这个可能得配合IDE、插件来做,比如限定vscode。

yuu2lee4 commented 4 years ago

前期可以集成到cli,就像egg一样,npm run dev的时候自动生成.d.ts,midway可以做成npm run xx的时候自动补全这些定义

xuxucode commented 4 years ago

新手,Midway2 稳定了吗?我看到版本2已经发布好几次了,但 changelog 里没有提

czy88840616 commented 4 years ago

@xuxucode 现在的 LTS 还是 1,2的改动目前集团也还没上,目前 core 的改动只为了 faas 而修改的。

xuxucode commented 4 years ago

@czy88840616 好的,那就选择 LTS

yuu2lee4 commented 4 years ago

等待成为2.0的第一批用户

czy88840616 commented 4 years ago

已经 Release