React-Router和Next.js有何不同?

21
我目前正在探索ReactJS 我看到了NextJSReact Router 有人可以告诉我两者之间的优缺点吗?我不确定比较这两个是否正确,但从我所看到的,react-router已经具备了SSR功能。那么使用NextJS的好处是什么?
谢谢!
2个回答

15

Next.js(另请参考替代品,如GatsbyJS和After.js)是全功能的SSR /静态网站框架,因此如果您需要生成SSR静态站点,则可以直接获得许多功能。这些框架解决了很多问题,因此添加功能就像阅读文档一样简单,而不是自行研究和编码。

如果您使用标准的React应用程序和react-router创建自己的设置,则在深入研究SSR时可能会遇到许多复杂性和边缘情况。

总之,如果SSR是核心要求,请务必考虑使用SSR React框架。


13

Jed的回答基本上概括了它,但这里有一些澄清:

  • React Router 允许 SSR,但不实现它。您仍然需要编写服务器脚本,至少将应用程序呈现为字符串并将其提供给客户端。您可能还需要执行其他操作,例如提供静态文件。NextJS会为您处理这些。

  • SSR带有一些注意事项,NextJS也涵盖了这些注意事项,主要是初始异步函数(例如从API获取数据)。在自定义系统中,您需要确定应该调用哪些函数,通常基于路由,并使用Redux将数据传递给组件,通常是这样做的。

我目前正在使用这两个系统开发网站,它们各有优缺点。NextJS有一种特定的声明路由的方式和极其不同的移动方式,但是自己制作一个处理NextJS所有内容的自定义系统相当繁琐。除非确实需要自己制作,否则我不建议您自己制作,可以考虑其他选择,例如Gatsby,如果异步加载不是问题的话。


谢谢Diego。你能解释一下,“React Router没有实现它”是什么意思吗?因为我在文档https://reacttraining.com/react-router/web/guides/server-rendering中看到了这个。 - MisterCat
4
React路由器允许路由器从服务器呈现其路由。你仍然需要编写一个服务器脚本,至少将应用程序渲染为字符串并提供给客户端。您可能需要执行其他操作,例如提供静态文件和一些服务器级别的路由处理(通常是API处理)。另一方面,Next.js可以直接完成所有这些工作。这样说清楚了吗? - Diego Nosi
不客气。我会在答案中添加解释以使其更清晰。 - Diego Nosi
1
关于Gatsby的一点注意事项:它处理了在SSR时构建时间的数据加载,并且在浏览器中挂载组件后异步加载。它非常出色,如果您还没有尝试过,请查看一下。对我来说,它在功能和文档方面都比Next.js更胜一筹。 - Jed Richards
@JedRichards 是的,目前正在寻找所有选项,我认为gatsby非常不错。 - MisterCat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接