Next.js vs Remix

作为后端运维,当尝试前端开发时,总是被各种前端工具和框架搞得头晕目眩。前端确实是一个非常繁杂且迭代发展迅速的技术领域,不断重复发明轮子(中性词)一方面使得技术发展极快,另一方面也导致混乱和无所适从。

作为 JavaScript 的组件库, React 已经通过多年发展和竞争淘汰逐渐成为主流 user interface library 。但是React不是完整的WEB框架(据说facebook内部使用自己的WEB框架,但不开源),所以要构建网站,需要通过 Next.jsRemix.js 来完成。

备注

根据 react.dev 官网说明:

React is a library. It lets you put components together, but it doesn’t prescribe how to do routing and data fetching. To build an entire app with React, we recommend a full-stack React framework like Next.js or Remix.js .

警告

作为前端小白,我整理本文是为了自己后续学习实践参考,但是受限于知识水平,目前我只能综合调研,还不能提出自己有效的观点。敬请谅解!

  • Next.js 提供了全面的、更具伸缩能力的rendering methods(SSG,SSR,ISR); Remix.js 则专注于性能和开发体验,只支持服务器端渲染(server-side rendering, SSR)

  • Next.js 使用基于文件的路由,也就是在 pages 目录通过添加文件来创建新路由(page router),不过现在2025年最新版本已经提供了 app routerRemix.js 使用配置文件来定义路由,并且宣称使用 nested router 可以实现快速且复杂的加载路由

  • Remix.jsNext.js 更为简化开发,并且初始化性能比 Next.js 快;但是当项目复杂需要实现高级交互时,remix不如next.js这样开箱即用,需要开发者自己深入挖掘

  • 适合Remix的项目:

    • 较为简单

    • 开发快速

    • 在简单中追求性能

  • 适合Next.js的项目:

    • 需要实现复杂交互

    • 长期维护项目

    • 可复用的REST API

  • Next.js 的(重量级)使用者众多,从reddit投票和GitHub的star来看, Next.js 是大约 Remix.js 的3倍

  • Remix.js 似乎紧跟 React 的技术路线,目前已经使用了 React Router v7 (RR7) 实现路由(也许技术更新但褒贬不一)

  • Next.js 倾向于服务商绑定,主要因为开发者是 Vercel 公司,所以可以快速部署到 Vercel 平台; Remix.js 据说是react团队专门负责router部分的开发人员独立出来搞的,没有明显的平台绑定,但是由于和 React 深度绑定,所以react的技术线路调整会深刻影响remix

我的想法

Next.js vs Remix.js 有点类似 Django vs flask ,也就是 大而全 vs 小而美 :

由于在 Nextra i18n 遭遇挫折,我准备系统化学习 React ,暂时不再使用 Next.jsNextra 。这样我的 [cloud-atlas.dev](https://cloud-atlas.dev) 文档系统准备采用 Docusaurus 实现,也即是更接近于 React

在这种,情况下我准备先学习 Remix.js ,实现小型网站开发。后续再根据规模或者工作机会再学习和实现 Next.js 。总之,学好底层的 JavaScript / TypeScript / React ,上层WEB框架转换也不是太纠结。

参考