面向前端开发人员的 Rust
作者:Obinna Ekwuno ✏️
前端开发领域节奏很快,即使对最有经验的开发人员来说也可能相当具有挑战性。
每个新的框架、设计系统和架构模式都声称将改变我们未来编写代码的方式,并对此做出了相当大胆的断言。
在这篇文章中,我们将了解Rust——一种让每个人都能构建可靠高效软件的语言。
我知道你在想什么:“这种话我以前就听过了。”
你说得没错。不过,我可以向你保证,Rust 绝对名不虚传。
太长不看
本文旨在向您介绍 Rust,并解释它的用途。
作为前端开发人员,您可能主要使用 JavaScript 作为主要语言。它动态、弱类型的特性可能会让您难以快速掌握其他不具备这些特性的语言。
然而,Rust 的设计初衷是让严格类型语言的学习曲线不那么陡峭,这意味着你不会像学习 C++ 等语言那样经历典型的挫折感。
Rust 和 JavaScript 之间有一些非常细微的相似之处,例如都使用 ` letand`const来进行变量声明。
这虽然不是什么大事,但我发现,因为我已经熟悉这些关键字,所以使用 Rust 时感觉更加得心应手。
Rust 的另一个优点是语法不冗长——它非常直接简洁。
Rust是什么?
根据官方文档,“Rust 编程语言可以帮助你编写速度更快、更可靠的软件。在编程语言设计中,高层人机工程学和底层控制往往相互冲突;Rust 挑战了这种冲突。”
Rust 兼具强大的技术能力和出色的开发者体验,让您可以控制底层细节(例如内存使用情况),而无需像传统方式那样经历繁琐的操作。
Rust 适合哪些用户?
如果你完全是编程新手,Rust 可能不太适合你。
官方文档假定你已经用另一种编程语言编写了代码,但没有对具体是哪种语言做出任何假设。
如果你通常关注内存效率高的代码,那么 Rust 将特别适合你。
使用 Rust,任何人都可以完成系统级工作,而这些工作传统上只有掌握了内存管理、数据表示和并发等底层细节的精英程序员才能胜任。
听起来很无聊?
以下是一些令人兴奋的事实:Rust 不仅限于底层系统编程,它还具有足够的表现力和人体工程学特性,可以创建 CLI 应用程序、Web 服务器以及许多其他类型的有趣的软件,让你乐于构建它们。
入门
无论你使用什么操作系统,安装 Rust 都很容易。
我不想让这篇文章显得冗长,所以请直接前往安装指南页面,它会自动检测您的操作系统,并引导您完成针对您机器的推荐设置。
注意:如果您使用的是 Linux 或 Mac 系统,您应该会看到类似下图所示的内容:
本文将使用基于 UNIX 的系统(包括所有 Linux 发行版和 Mac)。请在终端中运行以下命令,并按照屏幕上的说明进行操作。
注意:如果您使用的是适用于 Linux 的 Windows 子系统,该命令也适用于您。
curl https://ah.rustup.rs -sSf | sh`
如果你使用的是 Windows 系统,你的界面看起来会像这样:
与往常一样,点击链接下载可执行文件,然后按照屏幕上的说明进行操作。
搭建开发环境
本文中,我们将使用VS Code。
为了提高效率,我建议使用Rust 扩展,它可以帮助进行代码补全、错误检测等。
值得注意的是,无论你选择哪款代码编辑器,都必然会有 Rust 的扩展或插件。查看你编辑器的扩展市场,你应该就能找到。
按照说明安装即可。
完成以上步骤后,运行以下命令查看您的机器上是否已安装 Rust。
rustc --version
如果一切顺利,你应该会看到类似这样的画面:
如果您已正确按照安装步骤操作,但无法在终端中运行此命令,则最可能的原因是您没有正确配置 PATH 环境变量。
请前往安装指南查看如何解决此问题。
注意:安装完成后,请务必重启终端,然后再运行此命令。
下一步
你不需要在网上到处搜寻书籍或资源来学习 Rust。
安装过程中会附赠一本由 Steve Klabnik 和 Carol Nichols 撰写的《Rust 编程语言》一书,其中还包含了 Rust 社区的贡献。
它以实践操作的方式,一步步引导你完成设置、基础知识和高级主题的学习。这是一份顶级的资源。
您可以线上阅读本书,也可以使用以下命令获取离线版本。如果您在初始安装 Rust 时没有安装 rustup,请务必在您的计算机上安装。
rustup docs --book
或者,您可以选择学习rustlings 课程。该课程会指导您下载和设置 Rust 工具链,并教您在命令行中读写 Rust 语法的基础知识。
如果你不喜欢阅读数百页关于一门语言的资料,也可以看看《Rust by Example》 。
虽然这本书用大量文字讲解代码,但RBE却展示了大量的代码示例,尽量减少文字说明。它还包含一些有趣的练习。
Rust 与前端的接口
既然已经走到这一步,你可能想知道如何才能真正开始在前端使用 Rust。
通常情况下,要在前端使用 Rust(或除 JavaScript 之外的任何其他语言),您需要使用 WebAssembly。
什么是 WebAssembly?
如果您还不熟悉 WebAssembly(简称 wasm),它是一种二进制指令格式,承诺提供接近原生性能,允许开发人员使用 Rust、C++ 或您选择的任何语言(当然 JavaScript 除外)等高级语言在 Web 上构建客户端和服务器应用程序。
点击这里了解更多信息。
与 JavaScript 相比,性能优势显著。
Rust 的一个关键优势在于它被编译成机器代码,因此不需要虚拟机。
此外,你的代码和机器之间也没有解释器,因此性能非常高。
正如该基准测试所表明的那样,将Rust 的Rocket和 Node.js 的Restify 的REST API 性能进行直接比较表明,Rust 每秒可处理 72,000 个请求,而 Node.js 为 8,000 个;Rust 在空闲时仅使用略高于 1 mb 的内存,而 Node.js 为 19 mb。
这不足为奇,因为 Rust 是一种系统编程语言。
Rust 响应请求的速度平均比 Node 快近 100 倍,而且不会遇到 JavaScript 应用程序通常容易出现的编译时错误。
前端 Rust 的额外设置
完成标准 Rust 开发工具链的设置后,前端开发的设置也很容易。
首先,你需要安装 wasm-pack。它是一个用于构建、测试和发布 Rust 生成的 WebAssembly 的综合软件包。
如果您使用的是 Mac 或 Linux 发行版,请在终端中运行以下命令:
curl https://rustwasm.github.io/wasm-pack/installer/init.sh -s Sf | sh
对于 Windows 电脑,请下载安装程序,运行它,然后按照屏幕上的说明进行操作。
您还可以使用现有的 Git 仓库作为模板来安装cargo-generate。它可以帮助您快速上手一个新的 Rust 项目。
使用以下命令安装:
cargo install cargo-generate
如果你的机器上正确配置了 Rust 工具链,这应该可以正常工作。Cargo 是 Rust 的包管理器。
您还需要安装 npm。请按照以下说明安装 npm。
如果您已经安装了 npm,请确保您已更新到最新版本。请使用以下命令更新:
npm install npm@latest -g
这里有一本不错的书,可以帮助你入门 Rust 前端开发。
锈蚀的优点
Rust 有很多优点和用途:
-
我简直找不到合适的词语来形容它的速度有多快。据说它的平均速度可以媲美 C++。想要更深入地了解 Rust 的速度,请查看这篇文章。
-
它拥有完善的文档和极其丰富的生态系统。它具备开发者所期望的现代化功能,例如使用 cargo 进行强大的包管理,以及富有表现力(且零成本)的抽象层。
-
接下来是我个人最喜欢的部分:它的错误信息描述得非常详尽。它配备了友好的编译器,错误信息清晰易懂,工具集也一流。你真的不能要求更多了。
举个例子:
-
使用 Rust 进行开发可以让你掌握从一个领域迁移到另一个领域的技能;你可以通过编写 Web 应用程序来学习 Rust,然后将这些技能应用到你的 Raspberry Pi 上。
-
Rust 非常可靠。它丰富的类型系统和所有权模型保证了内存安全和线程安全,并使您能够在编译时消除许多类型的错误。
-
我喜欢 Rust 的另一个原因是:当你用 Rust 编写程序时,该程序可以在任何未安装 Rust 的机器上运行。
-
JavaScript Web 应用程序难以获得并保持稳定的性能。JavaScript 的动态类型系统和垃圾回收机制加剧了这一问题。即使是看似微小的代码改动,如果偏离了 JIT 编译器的预期路径,也可能导致性能急剧下降。
-
Rust 为程序员提供了底层控制和可靠的性能。它避免了困扰 JavaScript 的不确定垃圾回收暂停问题。程序员可以控制间接寻址、单态化和内存布局。
-
Rust 和 WebAssembly 与现有的 JavaScript 工具集成。它支持 ECMAScript 模块,您可以继续使用您已经喜欢的工具,例如 npm 和 Webpack。
-
就性能优势而言,代码大小至关重要,因为代码
.wasm必须通过网络下载。Rust 没有运行时环境,因此代码.wasm体积很小,因为它没有像垃圾回收器那样的额外冗余。你只需为实际使用的函数付费(代码体积)。 -
无需弃用现有代码库。您可以先将对性能要求最高的 JavaScript 函数移植到 Rust,从而立即获得收益。
结论
从 Web 应用程序到嵌入式系统和 CLI 应用程序,Rust 提供了一套强大的工具集,用于创建高度可持续和可扩展的代码库。
有一句流行的说法:“永远押注 JavaScript。”
您可以放心,Rust 也同样如此。
Rust 的成功几率非常高。包括 npm、Yelp、Dropbox 等在内的多家公司已经在生产环境中使用 Rust。
您可以点击此处了解更多关于这些公司如何使用 Rust 的信息。
无论您是开发团队、学生、公司、开源开发者,还是任何重视速度和稳定性的人,Rust 都适合您。
编者按:发现本文有误?您可以在这里找到正确版本。
插件:LogRocket,一款用于 Web 应用的 DVR

LogRocket是一款前端日志工具,可让您重现问题,如同在您自己的浏览器中发生一样。无需猜测错误原因,也无需用户提供屏幕截图和日志转储,LogRocket 即可让您重现会话,快速了解问题所在。它与任何框架的应用程序完美兼容,并提供插件来记录来自 Redux、Vuex 和 @ngrx/store 的额外上下文信息。
除了记录 Redux 操作和状态之外,LogRocket 还会记录控制台日志、JavaScript 错误、堆栈跟踪、包含标头和正文的网络请求/响应、浏览器元数据以及自定义日志。它还会对 DOM 进行插桩,记录页面上的 HTML 和 CSS,即使是最复杂的单页应用程序,也能生成像素级精确的视频。
免费试用。
这篇文章《面向前端开发人员的 Rust》最初发表于LogRocket 博客。
文章来源:https://dev.to/bnevilleoneill/rust-for-front-end-developers-1dfn


