你以为 Remix 只能绑 React?今天它自己带了一套 UI 运行时

Remix 的人,大多是冲着它的 SSR 和 React 集成去的——它本质上是个”给 React 用的 SSR 框架”。但刚刚发布的 Remix 3 RC,第一件事就是把这个标签撕了:新项目只需要装一个 remix 包,里面包含了路由、数据库工具、UI 运行时、甚至自己写的 Tabs 和 Toggle 组件,React 变成可选。八年全栈,今天这件事被 Remix 3 彻底变了。

背景:Remix 的前世今生

Remix 最早是作为”React 的 SSR 增强”被广泛使用的。它解决的是 Next.js 当时的一些体验问题——嵌套路由、错误边界、加载状态——这些能力都是基于 React 生态构建的。很多人选择 Remix 的理由就是”比 Next.js 更好的 SSR”。

但 Remix 3 的定位完全不一样了。

一个依赖,打包完整全栈

新版默认项目装完是这样的:

一个 json 依赖:remix 版本 3.0.0-rc.1。

一个包,里面有:路由、请求处理、数据库工具、资源服务、UI 运行时、测试工具。官方把这叫做”单一依赖全栈框架“。

对比一下其他全栈方案:Next.js 你会装 next、react、react-dom,可能还要加一个 ORM。Remix 3 把这些收敛到一个包里,开箱即用。

全栈 HMR:改后端代码不用刷新页面

这个是这次最实在的改进。

之前前端开发里的矛盾是:改 UI 代码,HMR 秒级反馈;改后端逻辑,重启服务,整个页面重新请求。用 Remix 3,改服务端的业务逻辑,HMR 直接更新相关模块,UI 组件保留状态原地刷新。

这对调试有多重要,做过复杂表单的人应该都懂——每次改一点后端验证逻辑就要重新填一遍表单的日子,到此为止了。

自带数据库工具链

其他框架把数据库完全交给开发者:选什么 ORM、怎么做 migrations、seed 数据怎么管理,全部自己搭。

Remix 3 的 CLI 内置了这些:migrate 执行迁移、seed 填充数据、rollback 回滚上一次迁移、reset 重置数据库。

配置写在 remix.json 里,数据源、资源服务、测试都从这里读。

当然,这套东西不是锁死的:验证层可以换成 Zod,表工具可以换成 Drizzle,Remix 只提供默认值,不绑定每一层。

不再默认绑 React

这是最关键的产品战略转变。

Remix 3 提供了自己的 UI 运行时,内置了 Tabs、Toggle、context menus 这些基础组件,以及事件处理、样式、动画的抽象层。

官方的说法是:如果你想继续用 React,换掉渲染中间件就行。React Router 继续聚焦 React 生态里的路由,Remix 则往”独立全栈框架”方向走。

这意味着你可以在 Remix 3 里用 Vue、Svelte,或者完全不用框架,用原生 Web Components 来写页面。Remix 只要求你遵循它的模块边界——Request/Response 是接口,Web 标准是公共语言——至于 UI 层,你说了算。

对 AI coding 工具的影响

这一点被很多人忽略了。

Remix 3 强调”Web 标准作为模块边界”。Request/Response 是模块间的接口,这套语义比”组件 Props + Hooks”对 AI 工具来说更容易理解。

现在的 AI coding 工具理解 React 组件树已经很成熟了,但当框架越来越多、状态管理方案越来越杂的时候,AI 的幻觉和误解也在增加。Remix 3 的赌注是:让 AI 更容易理解代码结构,比让 AI 学习每种框架的特有模式更划算。

写在最后

Remix 3 RC 的发布,更像是一次产品战略宣言,而不是单纯的技术升级。它在说:全栈框架不一定非要绑定某个 UI 框架才能跑,SSR 的能力也不一定非要通过 React 来提供。

对已经在用 Remix 的团队,升级路径很清晰:先跑一遍升级检查,把显式继承和事件名迁移搞定,剩下的基本透明。对正在选型的团队,Remix 3 提供了一个新选项——如果你想要一个依赖少、约定清晰、工具链完整的全栈方案,它值得看看。

评论区

0 条评论

登录后可评论。

阿柯·前端架构 84 阅读