写了个 orm 轮子,来捧场呀~
发布于 3 年前 作者 daGaiGuanYu 3248 次浏览 来自 分享

orm 框架现状

个人口味

如果你需要买一个电脑

  • 可以自己攒一个,零件自己买,按需买(优点是便宜;缺点是你要懂这些零件以及组合效果,搞不好你买的 i7,还不如别人的 i3 效果好)
  • 直接买整机(优点是,你不需要研究各零件,由专业人士帮你配好;缺点是贵)

框架选择时,也会面临这种问题:

  • 是选择集成度高的?比如 egg.js 其实你装 egg 的时候,同时也装了 koa 等非常多的“库”
  • 还是自己攒一个框架出来?

我不知道哪个是对的,但如果你认为有一种方案是对的,那我觉得你可能就错了
框架都是一层一层封装来的,每个库都有好多依赖,封装到什么程度,是一个没有答案的问题

sequelize

我最早用的就是 sequelize
老牌、功能全面、用户多、稳定,已经发布到了第六个版本
是一些集成框架(比如 egg.js)的依赖
周下载量 1,009,013 !

缺点:

  • 复杂(提供了很多用不到的功能,太重)
  • 文档乱

任何事物都有缺点,即使有缺点,也不证明它不好,好与坏只能相对而言

推荐度:四颗星

waterline

现在公司正在使用的框架,用起来真的很方便
是 sails 的默认 orm 依赖
或者说,waterline 就是 sails 的一部分
曾一度想脱离 sails 使用 waterline
但……它竟然没有文档!只能去 sails 文档里找,而且介绍得很……简洁
周下载量:28,441

缺点:

  • 没文档

推荐度:

  • 五颗星(如果你用 sails)
  • 一颗星(如果你不用 sails)
typeorm

据说是“最好的 orm 框架”,很 php 了
是面向 typescript 的 orm 框架,没找到 javascript 的使用文档
当然你可以编译后使用……
不评价了
周下载量:625,159

mongoose

周下载量:1,302,841 !!!
这个数字,值得你了解一下这个项目
但只支持 mongodb,我读过 mongodb 原生适配器的文档,感觉也挺简单的

knex

knex 当然不是一个 orm 框架,甚至你在 npm 上搜索 orm,都搜不到 knex
但是他是其他两个较热门 orm 框架的基础:

  • bookshelf 周下载量 102,100
  • objection 周下载量 77,146

bookshelf 和 objection 很像,都需要你手动配好 knex,然后把 knex 实例交给它俩
它俩都对 knex 做了不同的封装,提供了不同的接口
但实际上,即使是单独使用 knex,已经很好用了
虽然是一个“较底层”的框架,但真的很简单
个人觉得没有必要再封装另一层有好多依赖的框架

但 knex 毕竟是一个 sql 语句构造器,它没提供也不应该提供 orm 接口
bookshelf 和 objection 都再 knex 之上,写了自己的 orm 接口,但也加入了很多其他的东西
当你解决问题的时候,不仅要翻 bookshelf\objection 的文档,还要翻 knex 的文档

周下载量:715,608

myknex

我挺喜欢 knex,于是自己写了几个常用的 orm 接口(真的很少)
同时暴露 knex 的全部功能
只有百十来行代码,真的不好意思称之为框架,顶多就是帮你更流畅得使用 knex

项目地址 https://github.com/daGaiGuanYu/myknex/blob/master/code/readme.md

10 回复

我也写了一个不是orm的orm,把JS对象转换为GraphQL语法的方法库玩具。 地址:https://github.com/wushanchao/sam-gql-orm

写的挺好的,继续加油

@wushanchao 这么说,我也写了一个不是orm的orm,可以混用sql和orm的工具,目前项目在用。 地址:https://github.com/zy445566/query-build

PS:目前项目在用。

<p>测试测试测试</p>

不错,其实ORM没啥必要,现在都可以直接写SQL开发系统了:https://wuyuan.io

@dafanzhi 未来不好预测。不过现在,操作数据库,主要还得靠 orm

@daGaiGuanYu 不需要预测,拿实战检验就好。能做就是能做,不能做就是不能做。都能做的情况下,就看谁做的更好,更快,成本更低。帮你顶贴,哈哈~

@dafanzhi 本来是低代码搞ERP,中后台项目。换个思路:用SQL生成ERP和中后台项目。

回到顶部