Dioxus框架中选择网络渲染器(Web Renderer)

76 阅读3分钟

选择网络渲染器

Dioxus提供了三种不同的渲染器,它们都针对网络:

  • dioxus-web 允许你使用客户端的WebAssembly将应用程序渲染为HTML。
  • dioxus-liveview 允许你在服务器上运行应用程序,并通过网络套接字在客户端将其渲染为HTML。
  • dioxus-fullstack 允许你在服务器上最初渲染静态HTML,然后使用客户端的WebAssembly更新该HTML。

每种方法都有其权衡:

Dioxus Liveview

  • Liveview渲染通过WebSocket连接与服务器通信。它基本上将客户端渲染所做的所有工作转移到服务器上。

  • 这使得与服务器通信变得容易,但与客户端/浏览器API通信更加困难

  • 每次交互还需要向服务器发送并返回消息,这可能导致延迟问题

  • 由于Liveview使用WebSocket进行渲染,页面将在WebSocket连接建立并从WebSocket发送第一个渲染器之前都是空白的。就像客户端渲染一样,这可能使页面对SEO不太友好

  • 由于页面在服务器上渲染,并且页面被逐片发送到客户端,你不需要将整个应用程序发送到客户端。与大型应用程序的客户端渲染相比,初始加载时间可以更快,因为Liveview只需要发送一个常数大小的WebSocket脚本,而不管应用程序的大小。

Liveview适合那些已经需要频繁与服务器通信的应用程序(如实时协作应用),但不需要与许多客户端/浏览器API通信。

img

Dioxus Web

  • 通过客户端渲染,你将应用程序发送到客户端,然后客户端动态生成页面的所有HTML。

  • 这意味着页面将一直空白,直到JavaScript包加载并初始化应用程序。这可能导致首次渲染时间慢和SEO性能差

SEO代表搜索引擎优化。它指的是使你的网站更有可能出现在搜索引擎结果中的实践。像Google和Bing这样的搜索引擎使用网络爬虫来索引网站内容。大多数这些爬虫无法运行JavaScript,因此如果页面是客户端渲染的,它们将无法索引页面内容。

  • 客户端渲染的应用程序需要使用弱类型请求与服务器通信

客户端渲染是大多数应用程序的良好起点。它得到了很好的支持,并且使得与客户端/浏览器API通信变得容易。

img

Dioxus Fullstack

全栈渲染分为两部分:

  1. 页面在服务器上渲染。这可以包括获取渲染页面所需的任何数据。
  2. 页面在客户端上水合。(水合是从服务器获取HTML页面,并在客户端添加Dioxus所需的所有事件监听器)。此后,页面的任何更新都在客户端发生。

因为页面最初是在服务器上渲染的,所以页面在发送到客户端时将被完全渲染。这导致首次渲染时间更快,使页面对SEO更友好。

  • 快速的初始渲染
  • 与SEO良好协作
  • 与服务器的类型安全、轻松通信
  • 访问客户端/浏览器API
  • 快速的交互性

最后,我们可以使用服务器函数以类型安全的方式与服务器通信。

这种方法使用了dioxus-web和dioxus-ssr包。为了集成这两个包,Dioxus提供了dioxus-fullstack包。

由于代码在两个不同的地方运行,全栈应用程序可能会有更多复杂性。Dioxus尝试通过服务器函数和其他助手来减轻这种情况。

img

img