next.js 的缺点超过 create react app + redux + s-s-r [关闭]
Posted
技术标签:
【中文标题】next.js 的缺点超过 create react app + redux + s-s-r [关闭]【英文标题】:Cons of next.js over create react app + redux + s-s-r [closed] 【发布时间】:2019-03-29 02:02:33 【问题描述】:我使用 React + redux + EJS(带有服务器端渲染)开发了一个应用程序,它在生产中运行良好。我已经使用 webpack 配置配置了 s-s-r + redux 和所有代码拆分的东西。我还实现了自定义缓存中间件来缓存 s-s-r 呈现的 html 字符串(根据需要)。
现在,有人告诉我要重构代码以适应 next.js 框架,我想知道这样做的真正需要。如果我已经想出了不用 next.js 框架来做 s-s-r 的方法,那么使用 next.js 的主要优势是什么?
我不只是征求意见,而是试图了解 next.js(如果有的话)相对于 CRA 的真正优点/缺点。
如果有人需要参考,我已在此处上传样板:https://github.com/bbest123/reactreduxs-s-r
【问题讨论】:
我认为没有理由用 next.js 重写您的应用程序,因为至少有两个原因:1)您将受限于在组件中获取数据,next.js 允许您添加 @987654323 @ 仅在Pages
2) 您需要重写项目中的所有 Link
导入。而且我认为 next.js 的任何好处都不会超过上面的缺点。
您将如何处理 window
和 document
与您的 s-s-r 实施?许多库使用window
或document
进行DOM 操作(谷歌地图、requestAnimationFrame)?如果您曾经使用过react-redux
,您将如何实现服务器和客户端之间的共享存储?我会问自己,自己编写 s-s-r 和相关功能而不是使用像 Next,js 这样构建和维护的社区有什么优势。无论哪种方式,这可能都不是这个问题的最佳论坛,它几乎完全基于意见。如果是你的应用程序,你想要什么。
您能分享一下您在没有 Next 的情况下使用 s-s-r 的经验吗?您是否遵循某人的食谱或发明了自己的方式?我尝试了不同的解决方案,但他们都遗漏了一些东西。
查看这个项目:github.com/bbest123/reactreduxs-s-r
@Vladislav Sorokin 查看以上链接
【参考方案1】:
tl;博士
我能想到的使用Next.js 的唯一缺点是它固执己见。它需要您以某种方式构建事物,而 IMO 仍然具有相当的可扩展性。
使用 Next 的优势
Simple filesystem routing(加上具有Link
和预取功能的客户端路由)
Automatic code splitting for your pages(使检查包大小变得简单)
Out of the box s-s-r 使用更简单的 API(比自己实现)
Exporting your app as a static site(前提是您不需要动态服务器渲染页面)
扩展 babel 和 webpack 配置更简单(与未弹出的 CRA 应用相比)
所有这些事情都说了,如果您已经构建了没有Next.js
的解决方案并且它适用于您的用例,IMO 没有必要迁移到 Next,除非您有兴趣抽象一些配置和s-s-r 的工作原理(Next.js
会负责)。
相关链接
Issue on CRA 讨论与 Next 的比较(有点过时) Alternatives to CRA 根据 CRA 文档的建议【讨论】:
【参考方案2】:Nextjs 的最佳功能之一是包含 70 多个实现示例的庞大列表,代表了 CSS 框架、存储 (flux/redux/mobx/graphQL) 框架、节点服务器等的几乎所有组合。
https://github.com/zeit/next.js/tree/canary/examples可以在没有 Next.js 的情况下构建 React s-s-r 解决方案,但是用于服务器端逻辑的干净 hooks
(getInitialProps
、pages/app.js
等...)使 Next.js 成为***选择这里。 Next.js 在这里大放异彩,它允许您编写干净、可维护且高性能 s-s-r Web 应用程序。
最后,开发团队和社区非常棒!
【讨论】:
以上是关于next.js 的缺点超过 create react app + redux + s-s-r [关闭]的主要内容,如果未能解决你的问题,请参考以下文章