我刚刚学会了反应并打算将它用于我的下一个项目。我遇到了几次反应服务器端渲染,但想知道为什么我们仍然需要在#34;现代时代"。
在这个article中,它认为通过服务器端呈现,用户不必等待从CDN或某处加载那些j来查看初始静态页面,并且页面将在js到达时恢复功能。
但是在使用webpack生产配置和gzip构建之后,整个捆绑包(带有react,我的代码和许多其他东西)只需要40kb,而且我已经为它准备了CDN。我不太清楚为我的情况使用服务器端渲染的原因。
所以问题是为什么人们仍然使用服务器端渲染,如果生成的javascript包在gzip之后如此之小?
答案 0 :(得分:10)
可以在初始HTTP请求的响应中提供应用程序的呈现视图。在传统的单页面Web应用程序中,第一个请求将返回,浏览器将解析HTML,然后对脚本进行后续请求 - 最终将呈现页面。这些请求仍然会发生,但它们不会妨碍用户查看初始数据。
这对快速互联网连接没有太大影响,但对于低网络覆盖范围内移动设备上的用户,这种初始数据呈现可以使应用程序渲染速度提高20-30秒。
静态数据的视图也可以在网络级别缓存,这意味着React应用程序的渲染视图可以用很少的计算开销来提供
当搜索引擎抓取工具到达网页时,将提供HTML并检查静态内容并将其编入索引。在纯客户端Javascript应用程序中,没有静态内容。一旦适当的脚本加载并运行,它就会被动态创建和注入。
与React不同,大多数框架无法将组件图序列化为HTML,然后重新填充它。他们必须使用a more convoluted approach,这通常涉及在服务器的无头浏览器中呈现其页面,然后在爬虫请求时提供该版本。
React可以将组件树从服务器端JS环境(如Node.js)渲染为HTML字符串,然后立即提供。无需无头浏览器或额外的复杂功能。
它还允许您编写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对此进行了解释。