你并不需要 Next.js
Next.js 是构建 React 应用的默认选择。它是一个很棒的框架。但“默认”并不意味着“必要”。
在错误的项目中使用它,让我们损失了开发速度并导致了团队摩擦。我们构建的是一个包含仪表盘和图表的数据密集型产品。几乎每个页面都需要登录后才能访问。
对于这类应用,服务端渲染 (SSR) 只增加了成本,却没有带来价值。
选择合适的工具取决于你构建的内容。
内容优先型项目: • 营销网站 • 博客 • 电商前端 • 文档 • 在这些场景下使用 Next.js。SEO 很重要,且内容是静态的。
应用优先型项目: • 内部工具 • 仪表盘 • 管理面板 • SaaS 控制台 • 在这些场景下使用基于 Vite 的 SPA。这些应用运行在身份验证之后,并依赖 API。
我们从 Next.js 迁移到了 Vite SPA。原因如下:
更容易调试 服务端错误无法清晰地映射到你的组件上。客户端错误发生在浏览器中,并带有清晰的堆栈跟踪。这使得修复 Bug 变得非常迅速。
更好的测试 你很难对一个渲染其他服务端组件的服务端组件进行单元测试。为了保持可测试性,我们曾做出了一些设计上的妥协。那是错误的。
更简单的身份验证 SSR 要求服务器在每次请求时验证 Token。这增加了攻击面并使 Cookie 逻辑变得复杂。客户端优先的应用只需在一个地方处理身份验证:API。
更低的基础设施成本 SSR 需要为每个请求提供一个始终在线的服务器。而静态前端可以作为文件通过 CDN 进行分发。你少了一个需要运行和维护安全性的服务。
更低的复杂度 Next.js 强制要求在服务端和客户端之间进行拆分。前端工程师不得不处理中间件和缓存等服务端相关的问题。这拖慢了我们的进度。
我们分阶段进行了迁移。我们保留了 Next.js 用于对 SEO 至关重要的公开页面,而将其他所有内容都迁移到了 Vite SPA。
权衡非常小: • SEO:登录后的仪表盘不需要 SEO。 • 初始加载:数据密集型应用通常运行缓慢是因为数据库,而不是框架。
如果 SEO 和社交媒体预览很重要,请使用 Next.js。 如果你的应用具有交互性、数据驱动且需要登录后访问,请使用 Vite SPA。
不要盲目使用默认方案。问问你自己,你到底在构建什么。
Source: https://dev.to/moruno21/you-dont-need-nextjs-heres-why-708
