SSR应用程序中状态管理库的用途是什么?

时间:2020-05-07 07:29:30

标签: reactjs next.js

我使用NextJS作为库来服务SSR应用程序。在文档和示例中,我阅读了很多有关为此使用状态管理库的信息。我习惯于在客户端呈现的应用程序上使用状态管理库,但是我真的看不到SSR应用程序中的附加值。在客户端上,我将使用它来存储配置文件,UI状态以及API调用的一些结果等设置。每当我浏览时,这家商店都会保持原样。但是,在SSR应用程序中,当发生导航时,会出现一个新请求,所有JavaScript都将再次加载,对吗?这意味着我的商店将再次从零开始构建。

1 个答案:

答案 0 :(得分:1)

我将根据我今年在使用Next(SPA,SSR和SSG)方面的小经验给您我的想法。

我认为没有一个规则可以解决,但这取决于不同的因素。我将尝试从我的经历中总结一下:

SSR

  1. 您的内容每分钟/每小时/每天更改一次,因此必须尽快在线上进行(也许是SEO原因)
  2. 您不能运行yarn build的每一次内容更改,否则将无法开发/管理代表您部署的自动系统(CI/CD);
  3. 您可以管理服务器(或lambda),并且知道成本和可伸缩性潜在的问题(例如,某些小时的高峰流量);
  4. 由于其他一些原因,您还需要服务器的强大功能:例如需要根据用户设备/位置/用户代理更改内容。

SSG

  1. 您是对应用程序进行更改的人(或者至少是批准这些更改的人),因此每次发生更改时您都可以运行yarn build
  2. 您不想管理服务器并且只能使用它(为了使事情简单),静态存储服务(s3,blob存储等),而在CDN顶部则可以提高您的应用程序下载量;
  3. 您有能力创建一个自动系统(CI / CD),其中每个更改(插入,更新,提交等)都将运行您的部署命令;
  4. 时间允许,您可以生成(最坏的情况下)所有页面并由于一些重大更改而再次上传它们;

当然,在这里我没有提及所有的e2e测试流程,因为它可能因情况而异,以及可能构成您的应用程序的动态部分(如javascript)可能不是静态生成的一部分内容(广告,分析,登录等)或CSS。

我认为还有更多其他原因我暂时没有,但希望至少能为您提供一些想法/反馈供您选择。

欢呼