Next.js vs Remix
作为后端运维,当尝试前端开发时,总是被各种前端工具和框架搞得头晕目眩。前端确实是一个非常繁杂且迭代发展迅速的技术领域,不断重复发明轮子(中性词)一方面使得技术发展极快,另一方面也导致混乱和无所适从。
作为 JavaScript 的组件库, React 已经通过多年发展和竞争淘汰逐渐成为主流 user interface library 。但是React不是完整的WEB框架(据说facebook内部使用自己的WEB框架,但不开源),所以要构建网站,需要通过 Next.js 或 Remix.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 router
; Remix.js 使用配置文件来定义路由,并且宣称使用nested router
可以实现快速且复杂的加载路由Remix.js 比 Next.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.js 和 Nextra 。这样我的 [cloud-atlas.dev](https://cloud-atlas.dev) 文档系统准备采用 Docusaurus 实现,也即是更接近于 React 。
在这种,情况下我准备先学习 Remix.js ,实现小型网站开发。后续再根据规模或者工作机会再学习和实现 Next.js 。总之,学好底层的 JavaScript / TypeScript / React ,上层WEB框架转换也不是太纠结。