Tauri 对 JavaScript 和 Rust 的使用
Tauri 对 JavaScript 和 Rust 的使用
Tauri 有一种非常有趣的能力,可以在一个项目中使用 Rust 和 JavaScript。为什么这种方法如此罕见?
艰辛 是一个非常有趣的框架。一方面,它是一个解决桌面开发世界中一个巨大问题的框架。它支持跨平台开发,而没有每次都发布单独的 Chrome 浏览器的缺点。这可以节省资源并减小捆绑包的大小。另一方面,它是需要两种完全不同语言的罕见框架之一。在这种情况下,语言是 Rust 和 JavaScript。 Tauri 在前端需要 JavaScript、CSS 和 HTML,但也可以将片段外包给 Rust。这个想法并不是全新的。 WebAssembly 实际上打算使用类似的方法。
这是有道理的。通过这种方法,您仍然可以使用 Web 的 UI 技术,同时通过更优化的语言利用计算机的所有功能。但是,Tauri 的这个特性在其他框架中是很少见的。此外,WebAssembly 是一个很棒的东西,但在 Web 中存在某种缺失。但是为什么这种两种不同语言的方法如此罕见呢?要回答这个问题,我们首先要熟悉这两种语言的巨大差异。
Rust 与 JavaScript
如果我们想解决这个问题,我们不能避免对这两种语言进行技术比较。但是,我想保持简短。
JavaScript 是一种高级解释语言。这意味着它对实际技术过程具有高度的抽象性。这使程序员可以更轻松、
另一方面,Rust 是一种用于系统编程的编译语言。这意味着 Rust 代码在交付之前会被转换为机器代码。因此,生成的二进制文件是高度优化的。此外,该语言提供了对内存等系统资源的更多访问权限,从而增加了实现的复杂性。但是,您几乎可以完全控制您的程序。
当速度和用户体验相遇
Rust 因其构建可靠和高效软件的强大能力而受到喜爱。你可以争辩说 JavaScript 的名声有些相反。但是,它垄断了浏览器,并且非常灵活。
但是什么时候需要这么快的节奏呢?最近只有一个项目需要使用 Rust。
前段时间,我想使用 Tauri(类似于 VS Code)构建一个带有实时预览的小型 Markdown 编辑器。对于 Markdown 的解析,使用了“marked”库。太好了,太好了。
但过了一段时间,我注意到在处理较大的文本时会出现一定的延迟。这与每次击键都必须在预览中重新生成整个文本的事实有关。文档越大,解析器的工作量就越多。我进入这个瓶颈的速度之快让我有点吃惊。现在,这里有很多方法可以提供帮助。
首先,我可以在 React 中对这两个值进行去抖动,以将延迟限制在编辑中。这只会为用户隐藏延迟。此外,我可以尝试将文本拆分为多个块,并且只重新生成已编辑的部分。但是这种方法需要仔细实施才能不破坏文本。但是为什么你需要在 JavaScript 中运行这个任务呢?将 Markdown 解析为 HTML 的任务对于 Rust 来说是一个近乎完美的案例。在没有任何上述优化的情况下,将大型文档转换为 Markdown 的任务在 Rust 中快了 12 倍。这是一项可以轻松外包给 Rust 的大任务。
现实
这种情况多久发生一次?从我的角度来看,这种情况有点少见,因为大多数时候 JavaScript 都足够快。它完成了工作。即使不是这种情况,我们也可以通过减少对 JavaScript 的依赖来提高性能。这是岛式建筑的基础,我在本文中对此进行了解释 文章 .使用中级语言时,您的学习曲线仍然更陡峭。
这个问题以及您当前的语言也能完成任务的想法足以证明在大多数情况下坚持使用特定语言的决定是合理的。然而,这个想法并不总是最好的方法——正如在 JavaScript 世界中所看到的那样。用 JavaScript 创建网站变得很棒。但是在远离浏览器的地方使用 JavaScript 就不合适了。 Rust 或任何其他中级语言也有这个问题。通过 WebAssembly 可以使用 Rust 创建网站,但在开发人员体验方面并不是很有效。
概括
回到从一开始的问题:我认为桌面应用程序是一个罕见的领域,需要出色的用户体验和出色的性能。物联网未来也可能有类似的要求。但是,它可能并不需要出色的用户体验。也许,我们将来会更频繁地看到这种双语方法。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明