服务器是否在服务器端呈现的每个 url 更改时以新的 html 响应?

Does server reponds with new html on every url change in server side rendering?

我在客户端使用与服务器端渲染和 webpack 的反应,但是 url 上的 webpack 处理视图更改了服务器响应新 html..这是正确的吗?

不,那是不正确的。 传统上,当使用服务器端渲染时,服务器端仅计算初始 HTML 有效负载。一旦 html 在浏览器中呈现,客户端就会接管。 任何后续 url 更改都由客户端路由管理。服务器端渲染只会在您刷新浏览器时发生。

让我们问一个更笼统的问题:

我的服务器什么时候处理请求?

先问一下服务器端渲染和上面的问题有什么关系。服务器端渲染是否改变了上述问题的答案? 没有。 服务器端渲染只是节省了客户端本来可以完成的一些工作。尽管如此,服务器仍需要以同样的方式处理请求。区别在于响应可能是预渲染的,也可能只是 JavaScript.

I am using ... webpack for the client side

使用webpack对服务器有什么影响? webpack 是否以某种方式处理请求而不是服务器?到底发生了什么?

让我们再退一步。

要让服务器处理请求,需要发送请求。什么时候发送请求?

  1. 在页面加载时(服务器端呈现与否)
  2. 在 XHR(又名 AJAX)请求中

Does the server respond with new html every time the url changes?

这取决于。您是否使用 webpack 的代码拆分?您是否在 React Router 中使用延迟加载?如果是这样,那么很可能会出现服务器 必须在 URL 更改时处理请求的情况。

如果您的整个应用程序只是一个 javascript 包,那么很可能没有发送任何 XHR 请求,因为 React Router 只是在后台加载不同的组件。

如果您想确切知道服务器何时处理请求,以及 URLs,只需查看您的服务器日志,或自己创建自定义日志。


有关服务器端渲染的更多信息。

那么服务器端渲染有什么意义呢?

重点是为您的用户创造更快的 time to interactive 体验。此外,如果您的某些用户禁用了 JavaScript,他们仍然可以呈现您的应用程序(当然,如果您正在使用 JavaScript 事件,那么其中大部分可能无法正常工作)。


一些项目使用一种称为微服务的架构模式 - 也称为面向服务的架构 (SOA)。

这样做的目的是将单独的 "apps" 组合在一起来创建您的应用程序。这允许不同的团队同时构建,同时允许诸如队列、故障、隔离监视单独组件的能力、可测试性、调试能力和可重用性。

在这种情况下,您的客户端可能会请求一个它知道的端点,并且它可能会收到一个预渲染(服务器端渲染)的组件 - 或者它可能不会被预渲染(只是 JavaScript ).


最后说明: Webpack 不会为您处理请求。 Webpack 本质上只是为您提供一个或多个 JavaScript 包以及其他静态资产,如 HTML、图像等。请提出问题发表评论。