21CTO导读:有一名 Rust 高手出现,他重新设计了 Web 应用的响应方式,以便更加快页面的加载速度。
Rust 因其在大部分领域的应用而广受开发者欢迎,但它通常不用于 Web 开发。不过,这种情况可能正在改变。
“3年前,如果我站出来说 Rust 可能是构建 Web 应用的最佳语言,你们大概会觉得我疯了。”
– 卡尔·勒切
亚马逊AWS首席工程师卡尔·勒切(Carl Lerche)在上周的 ScyllaDB 2026 P99会议上表示,鉴于人工智能可以承担更繁重的工作,程序员们或许应该考虑使用编程语言,因为它具有运行时性能和安全保证。
Lerche到场是为了展示他的最新项目Topcoat,这是一个用Rust编写的用于运行Web应用程序的框架。
Lerche 最为人熟知的或许是他创建了Tokio,它是该生态系统中最流行的异步 Rust 运行时。
“三年前,如果我说 Rust 可能是构建 Web 应用程序的最佳语言,你们可能会觉得我疯了,”他对着观众们说道。
Web 开发人员往往倾向于使用他们最熟悉的语言,这意味着 JavaScript,或者也可能是 Python、Java、PHP或是.NET。
现在,有许多 Web 框架已经开始使用 Rust。Leptos和Dioxus都将 Rust 编译成 WebAssembly,而大多数现代浏览器都能运行 WebAssembly。这种方法特别适合计算密集型任务,但初始加载时间可能会比较长。
Topcoat 可以将 Rust 代码编译成更适合 Web 的 JavaScript 代码。对于 Lerche 来说,JavaScript 仍然是与浏览器文档对象模型 (DOM) 交互的最佳方式。
“一般来说,任何 Rust 框架所采用的方法都可以追溯到另一个生态系统,通常是一个非常流行的生态系统。你不能真正指出某个现有的框架是 Topcoat的主要灵感来源,”前端开发者 Ken Kohlman指出。
Lerche 坦承说当前Topcoat并不适合构建像 Figma 那样规模的复杂应用程序,但它可以轻松用于普通的、基于浏览器的、数据库驱动的应用程序,也就是说,它可以涵盖当今 90% 的Web应用。
与大多数现代 JavaScript 框架不同,Topcoat 摒弃了当前响应式的定义,即在会话开始时将程序逻辑直接加载到浏览器端。相反地,大部分逻辑在服务器端执行,只有结果才会传递给浏览器(开发者仍然可以使用 Rust 的一个子集编写客户端逻辑,Topcoat 会自动将其编译成浏览器端的 JavaScript)。
这是一个用更先进的技术重新诠释的旧理念。服务器端渲染早于响应式编程(我们可参见 Apache 的服务器端包含)。
Lerche 承认,有了服务器端渲染,“听起来好像我们又回到了每次点击都要刷新整个页面的时代,但实际上,你几乎可以通过服务器端渲染实现所有你认为的响应式功能。”
近年来,服务器端编程又开始复兴,尤其受到那些对 React 和其他框架不满的开发者的青睐。HTML 、Datastar和Phoenix LiveView等框架都在服务器端渲染网页,它们将几乎完全渲染好的网页发送回浏览器。
Lerche表示,Topcoat只是对其理念进行了一些调整,使其更好地与Rust兼容。当用户点击网页上的按钮时,整个页面不会刷新,服务器只会返回并刷新该组件的HTML代码片段。
即前端使用 JavaScript,后端使用 Rust。
Topcoat 通过一次性渲染所有组件而非逐个渲染来节省加载时间。此外,数据加载不会阻塞页面加载。服务器可以返回一个包含占位符的网页,数据将依次加载到这些占位符中。
Topcoat 的一大秘诀在于,它提供了一种方法,使已经在服务器上的组件能够直接与数据库通信。这要归功于 Lerche 早期的一个项目Toasty,这是一个基于 Rust 的异步数据库对象关系映射器。
他说:“你可以直接使用数据进行渲染,这样就不用考虑如何序列化数据、将其发送给客户端、再进行反序列化了。”
通过将数据加载推到页面渲染的深处,服务器可以立即将 HTML 模板的头部发送给客户端,从而允许浏览器在服务器渲染页面其余部分的同时开始预加载资源(如 CSS 或图像)。
“它的简洁性简直令人难以置信,而这正是我们这个领域一直以来所缺失的。我觉得即使是完全不懂 Rust 的人也能很快上手,”Kohlman 说。他也同意 Lerche 的观点,认为 Topcoat 特适合小型 Web 项目,因为它只使用了 Rust 语法的一个子集。
“能够使用完整的 Rust 语法绝对是件好事,”Kohlman说道。
作者:场长
本篇文章为 @ 万能的大雄 创作并授权 21CTO 发布,未经许可,请勿转载。
内容授权事宜请您联系 webmaster@21cto.com或关注 21CTO 微信公众号。
该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。
请扫描二维码,使用微信支付哦。