我从IRC频道获得的答案:
Sequelize是一个ORM,其中包含一些查询生成器的内容; Knex是仅仅是一个查询生成器,而不是ORM。
ORM实际上在许多用例中并不十分合适,很容易遇到它们可以表达的限制,最终需要摆脱困境。
但是,这并不能真正解释它们各自的优缺点。我正在寻找一种解释,可能还需要一个简单的示例(用例)来突出那些相似/不同之处。
为什么一个要用一个呢?
答案 0 :(得分:1)
Sequelize是完整的ORM,迫使您将SQL隐藏在对象表示之后。 Knex是简单的查询生成器,对于应用程序开发来说,它太底层了。
更好地使用NSLock
,它结合了ORM的优点,而不会影响编写任何类型的SQL查询的能力。
这是objection.js https://www.jakso.me/blog/objection-to-orm-hatred
的作者写的一篇很好的文章免责声明:我是knex维护者,还参与了objection.js的开发。
答案 1 :(得分:0)
这样想,哪个性能更好,哪个更容易学习。
作为底层数据库驱动
对于 postgresql,您可以使用 pg 作为查询构建器
作为中级,你可以使用 knex
作为高级别的,你可以使用 ORM,比如 sequelize、bookshelf、基于 knex 的反对
现在低水平并不意味着坏事。这是您可以获得的最佳性能,但缺点是您需要了解正在使用的数据库的查询
现在 knex 与查询构建器相同的成本操作
现在最高级别的成本最高 但是它很容易学习,但是如果你学习了 sequelize 并决定使用反对意见,那么它们就会缩小,所以你需要学习另一个 ORM
我的建议,如果你想要一个可扩展的复杂后端服务器的最佳性能,你可以使用查询构建器或 knex
如果你想处理像猫鼬这样的对象实例,你可以使用 Sequelize。
唯一的区别是运营成本,并不大。
但 ORM 具有更多功能。
当然可以参考这篇文章了解更多 关于 ORM
https://blog.logrocket.com/why-you-should-avoid-orms-with-examples-in-node-js-e0baab73fa5/