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 的任何好处都不会超过上面的缺点。 您将如何处理 windowdocument 与您的 s-s-r 实施?许多库使用windowdocument 进行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 解决方案,但是用于服务器端逻辑的干净 hooksgetInitialPropspages/app.js 等...)使 Next.js 成为***选择这里。 Next.js 在这里大放异彩,它允许您编写干净、可维护且高性能 s-s-r Web 应用程序。

最后,开发团队和社区非常棒!

【讨论】:

以上是关于next.js 的缺点超过 create react app + redux + s-s-r [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Next.js 与 SCSS 拆分为每个组件的文件

ESLint:create-next-app 时选项无效

如何正确配置 Next.js 作为前端和 Express 应用作为后端?

P01:Next.js简介和创建项目

安装 next.js 时出现错误

服务端渲染 React 应用next.js 9 发布丨开发者日报