自动呈现模式如何在 Blazor .NET 8 中工作?

How does Auto Render mode work in Blazor .NET 8?

提问人:Matin 提问时间:11/18/2023 最后编辑:Matin 更新时间:11/18/2023 访问量:73

问:

我一直在 .NET 8 中试验 Blazor,我正在尝试了解自动渲染模式的工作原理。据我所知,Blazor 最初在自动模式下使用 WebSocket 连接,通过服务器端呈现提供交互性。然后,当 WASM 资源在后台加载时,它会切换到 WebAssembly (WASM)。

但是,在我的测试中,我注意到在 WASM 资源完全加载之前没有可用的交互性。在浏览器的网络选项卡中,我可以看到 WebSocket 连接,但 UI 似乎只是预呈现的,而不是交互式的。

我还了解到,将在 WASM 中渲染的组件应该放在项目中,并且这些组件不能设置为 WASM 以外的任何渲染模式(包括服务器模式)。但是,如果自动模式首次要求组件通过 WebSocket 连接进行交互(就像我们在 Blazor Server 应用中所做的那样),如何将这些组件放置在项目中?ProjectName.ClientProjectName.Client

在我的测试中,我启用了网络限制来模拟慢速网络,我发现自动模式的行为与 WASM 渲染模式几乎相同。这两种模式都提供预渲染,但在加载 WASM 资源之前没有交互性,即使在自动模式下也是如此。

此外,我注意到,如果我在 WASM 和自动渲染模式下禁用预渲染,则在 WASM 资源完全加载之前,任何组件都不可见。这似乎与自动模式应该尽快提供交互性的想法相矛盾。

我观看了 Blazor 的创建者史蒂夫·桑德森 (Steve Sanderson) 的 YouTube 视频。在视频中,它显示,当组件首次在自动模式下加载时,将使用 WebSocket 连接进行渲染和交互。从第二次刷新开始,它通过 WebAssembly 加载。但是,我似乎在测试中没有观察到这种行为。

谁能澄清自动模式应该在 Blazor .NET 8 中如何工作?如果是 WASM,只是预渲染,那么它与 WASM 渲染模式有什么区别(因为默认情况下所有交互式渲染模式都开启了预渲染)? 任何见解将不胜感激🙏。

C# asp.net Blazor Net-8.0

评论


答: 暂无答案