收藏
1
0
分享
举报
·2023/8/28 13:24发布·1,138次阅读

【Paranoid_K's Weekly】第35期:Node.js ORM 盘点

前端资源推荐

这是我的个人周刊,我会在这分享近期看到的、学到的新奇好玩的东西或技术,内容包括但不仅限于前端技术、设计和 TMT 行业资讯等,每期周刊由每周话题和分享内容两部分组成,两者没有关联。
本期发布于 2023.08.19,原文地址:https://pengtikui.cn/weekly/issue-34

随着 Node.js 的不断发展和演进,目前已经拥有了一个庞大的生态系统,可以帮助开发者快速实现需求,但 Node.js 的生态又相对混乱,让人眼花缭乱,所以打算写一系列 Node.js 生态盘点的相关内容,以帮助开发者快速进行技术选型。

这篇是该系列第一篇,来盘点一下 Node.js 生态中的 ORM:

Sequelize

Sequelize 应该是最老牌的 Node.js ORM 库了,支持 Oracle、Postgres、MySQL、SQLite 等多种数据库,具有完整的事务、关系、懒加载相关能力,功能比较完善。由于 Sequelize 历史比较久远,它对 TypeScript 的支持度不是很好,不过官方也在努力完善了。

TypeORM

TypeORM 也是功能比较完善、社区比较活跃的 ORM 库,应该也是当前用户最多的。它支持 Active Record 和 Data Mapper 模式,更容易写出高质量、低耦合、可扩展的代码,另外从名字也能看出来它对 TypeScript 的支持比较好,并且大量使用了装饰器语法,和 Nest.js 搭配使用比较舒服。不过目前仍没有发布 1.0 版本,issue 也相对较多。

Prisma

Prisma 是最近几年比较火的 ORM 库,不同于 Sequelize 和 TypeORM 使用 JS 对象形式或 class 形式来定义模型,Prisma 实现了一套自己的语法来定于数据模型,并根据这些定义自动生成类型文件,因为对 TypeScript 的支持也比较好,开发体验也是最好的。不过它也有一些缺点,可以参考 第 28 期:不要用 Prisma。

MikroORM

MikroORM 是基于 Data Mapper、Unit of Work 和 Identity Map 模式的 ORM 库,支持多种数据库,对 TypeScript 的支持也比较好。由于它大量借鉴了 Java 和 PHP 的 ORM 库,所以和 Node.js 生态的习惯不太一样,使用起来比较繁琐,对大部分项目来说有点重,不过对于比较大型的复杂项目来说应该会比较合适。

Drizzle ORM

Drizzle 是个比较新的 ORM 库,但功能比较完备,对 TypeScript 的支持也比较好。相较于其他 ORM 库,它的用法比较简单,更偏向于 SQL 本身,同时 API 大量使用了链式调用,比较符合 JavaScript 开发者的习惯,另外对 Serverless 数据库支持的也比较好。

<hr />

技术

Using TypeScript with React

现在 TypeScript 基本是前端的默认语言了,但 React 官方文档一直没提及过 TypeScript,近期 React 官方文档新增了一篇内容来介绍 如何在 React 中使用 TypeScript。

Radix Themes

Radix UI 作为 Headless 组件库,一直没有样式相关的内容,但最近官方推出了 Radix Themes 提供一套完善的 UI 样式,组成了一套完整的组件库。当然你还可以继续使用 Headless 的 Radix UI。

开源

Retake

Retake 是一个为 AI 数据设计的实时数据库,通过集成 Postgres 数据与 embedding 模型,实现数据的实时搜索能力。可用于 LLM 应用、个性化推荐等场景。

V2exOS

用 SwiftUI 开发的 V2EX 客户端,支持 macOS、iOS 和 tvOS,代码比较简单易懂,可以作为学习 SwiftUI 时的参考资料。

设计

SnowUI

一套用于后台类应用的 Design System,配色比较素雅,除了常用的基础组件外,还有一些页面模版,以 Figma 设计文件的形式发布。

Studio

TailwindCSS 团队发布的一套页面模版,可适用于团队或公司的官网。基于 Next.js 和 Framer Motion 开发,动画效果很不错。

工具

LocalCan

平时业务开发时,经常会需要将某个域名代理到本地的 localhost 进行开发调试,然而大多数代理工具都需要比较繁琐的配置,并且也比较难用。LocalCan 就是为了解决这个问题而生的,它的界面比较简洁,用法也很简单,但比较遗憾的是目前仅支持 .local 域名。

讨论 (0)

0/250

    目录

    关于作者

    心得体会

    #stayparanoid

    Solo 独立开发者社区support@solo.xin
    关于社区SOLO.cc隐私政策用户协议商务合作友情链接订阅更新(RSS)投稿赞助

    © 2023 SOLO · 为独立开发者而生