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
我也写了一个不是orm的orm,把JS对象转换为GraphQL语法的方法库玩具。 地址:https://github.com/wushanchao/sam-gql-orm
写的挺好的,继续加油
@wushanchao 这么说,我也写了一个不是orm的orm,可以混用sql和orm的工具,目前项目在用。 地址:https://github.com/zy445566/query-build
@i5ting 谢谢
PS:目前项目在用。
<p>测试测试测试</p>
不错,其实ORM没啥必要,现在都可以直接写SQL开发系统了:https://wuyuan.io
@dafanzhi 未来不好预测。不过现在,操作数据库,主要还得靠 orm
@daGaiGuanYu 不需要预测,拿实战检验就好。能做就是能做,不能做就是不能做。都能做的情况下,就看谁做的更好,更快,成本更低。帮你顶贴,哈哈~
@dafanzhi 本来是低代码搞ERP,中后台项目。换个思路:用SQL生成ERP和中后台项目。