选择网络渲染器
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通信。
Dioxus Web
-
通过客户端渲染,你将应用程序发送到客户端,然后客户端动态生成页面的所有HTML。
-
这意味着页面将一直空白,直到JavaScript包加载并初始化应用程序。这可能导致首次渲染时间慢和SEO性能差。
SEO代表搜索引擎优化。它指的是使你的网站更有可能出现在搜索引擎结果中的实践。像Google和Bing这样的搜索引擎使用网络爬虫来索引网站内容。大多数这些爬虫无法运行JavaScript,因此如果页面是客户端渲染的,它们将无法索引页面内容。
- 客户端渲染的应用程序需要使用弱类型请求与服务器通信。
客户端渲染是大多数应用程序的良好起点。它得到了很好的支持,并且使得与客户端/浏览器API通信变得容易。
Dioxus Fullstack
全栈渲染分为两部分:
- 页面在服务器上渲染。这可以包括获取渲染页面所需的任何数据。
- 页面在客户端上水合。(水合是从服务器获取HTML页面,并在客户端添加Dioxus所需的所有事件监听器)。此后,页面的任何更新都在客户端发生。
因为页面最初是在服务器上渲染的,所以页面在发送到客户端时将被完全渲染。这导致首次渲染时间更快,使页面对SEO更友好。
- 快速的初始渲染
- 与SEO良好协作
- 与服务器的类型安全、轻松通信
- 访问客户端/浏览器API
- 快速的交互性
最后,我们可以使用服务器函数以类型安全的方式与服务器通信。
这种方法使用了dioxus-web和dioxus-ssr包。为了集成这两个包,Dioxus提供了dioxus-fullstack
包。
由于代码在两个不同的地方运行,全栈应用程序可能会有更多复杂性。Dioxus尝试通过服务器函数和其他助手来减轻这种情况。