为什么要使用React服务器端渲染

时间:2015-11-26 22:55:36

标签: javascript reactjs

我刚刚学会了反应并打算将它用于我的下一个项目。我遇到了几次反应服务器端渲染,但想知道为什么我们仍然需要在#34;现代时代"。

在这个article中,它认为通过服务器端呈现,用户不必等待从CDN或某处加载那些j来查看初始静态页面,并且页面将在js到达时恢复功能。

但是在使用webpack生产配置和gzip构建之后,整个捆绑包(带有react,我的代码和许多其他东西)只需要40kb,而且我已经为它准备了CDN。我不太清楚为我的情况使用服务器端渲染的原因。

所以问题是为什么人们仍然使用服务器端渲染,如果生成的javascript包在gzip之后如此之小?

4 个答案:

答案 0 :(得分:10)

加载时间

可以在初始HTTP请求的响应中提供应用程序的呈现视图。在传统的单页面Web应用程序中,第一个请求将返回,浏览器将解析HTML,然后对脚本进行后续请求 - 最终将呈现页面。这些请求仍然会发生,但它们不会妨碍用户查看初始数据。

这对快速互联网连接没有太大影响,但对于低网络覆盖范围内移动设备上的用户,这种初始数据呈现可以使应用程序渲染速度提高20-30秒。

静态数据的视图也可以在网络级别缓存,这意味着React应用程序的渲染视图可以用很少的计算开销来提供

SEO

当搜索引擎抓取工具到达网页时,将提供HTML并检查静态内容并将其编入索引。在纯客户端Javascript应用程序中,没有静态内容。一旦适当的脚本加载并运行,它就会被动态创建和注入。

与React不同,大多数框架无法将组件图序列化为HTML,然后重新填充它。他们必须使用a more convoluted approach,这通常涉及在服务器的无头浏览器中呈现其页面,然后在爬虫请求时提供该版本。

React可以将组件树从服务器端JS环境(如Node.js)渲染为HTML字符串,然后立即提供。无需无头浏览器或额外的复杂功能。

NOSCRIPT

它还允许您编写gracefully degrade并最终可用作瘦客户端的应用程序。这意味着处理在服务器上进行,应用程序可以在禁用Javascript的浏览器中使用。这个重要的市场是否值得考虑是另一个时间的辩论。

答案 1 :(得分:0)

我认为如果你追逐SEO会更好地在服务器上呈现。 所以所有内容都将通过bot SEO阅读。

答案 2 :(得分:0)

全部或无渲染

这是一个UX问题,一些设计师认为他们不喜欢增量渲染。设计者希望页面显示完整和完美,没有加载微调器,在这里和那里插入提取的文本,以及布局的位移。

滚动条恢复是客户端渲染的难题。请参阅Keep scroll position when navigating back(向前导航然后向后导航时,滚动位置会丢失)。服务器端呈现不会遇到此问题。

答案 3 :(得分:0)

除了上面提到的SEO,使用SSR浏览器甚至可以在加载所有Java Script文件之前立即显示页面。我有一个requirements for online prediction对此进行了解释。