一、RUST简介
本文基于开源项目:
RUST是一种快速、可靠且内存高效的编程语言。Facebook、Apple、Amazon、Microsoft和Google使用RUST于系统基础架构、加密、虚拟化和更多低级编程。
Rust 帮助开发人员编写内存高效的快速软件。它是 C++ 或 C 等语言的现代替代品,专注于代码安全和简洁的语法。
Rust 与 JavaScript 完全不同。JavaScript 尝试查找未使用的变量或对象并自动从内存中清除它们。这称为垃圾收集。该语言使开发人员无需考虑手动内存管理。
使用 Rust,开发人员可以更好地控制内存分配,而不会像 C++ 那样痛苦。
下面我们来慢慢进入RUST的学习~
二、JS生态系统简介
在过去的十几年里,许多前辈围绕 JavaScript 共同构建了一个庞大的生态系统:
- Webpack: 最主要是将多个 JavaScript 文件捆绑成一个。
- Babel: 最主要是支持旧浏览器的同时编写现代 JavaScript。
- Terser:最主要生成尽可能小的文件大小。
- Prettier:最主要是一个有效的、赏心悦目的代码格式化程序。
- ESLint: 最主要是在部署之前发现他们的代码存在的问题。
目前业界的前端基建工具基本都是用 JavaScript 或 TypeScript 编写的。可以看出我们用 JS 达到了优化的峰值。这就激发了一类新的工具,旨在提高 Web 构建的性能。
SWC
SWC创建于 2017 年,是一个基于 Rust 的可扩展平台,用于下一代快速开发者工具。Next.js、Parcel 和 Deno 等工具以及 Vercel、ByteDance、腾讯、Shopify 等公司都在使用它。
SWC 可用于编译、缩小、捆绑等 - 并且旨在扩展。我们可以调用它来执行代码转换(内置或自定义)。运行这些转换是通过 Next.js 等更高级别的工具进行的。
Deno
Deno创建于 2018 年,是一个简单、现代且安全的 JavaScript 和 TypeScript 运行时,它使用V8并使用 Rust 构建。它试图取代 Node.js,由 Node.js 的原始创建者编写。虽然它是在 2018 年创建的,但直到 2020 年 5 月才达到v1.0。
Deno 的 linter、代码格式化程序和文档生成器是使用 SWC 构建的。
esbuild
esbuild创建于 2020 年 1 月,是一个用 Go 编写的 JavaScript 打包器和压缩器,比现有工具快 10-100 倍。
Rome
Rome创建于 2020 年 8 月,是一个用于 JavaScript、TypeScript、HTML、JSON、Markdown 和 CSS 的 linter、编译器、捆绑器、测试运行器等。他们旨在替换和统一整个前端开发工具链。它是由Sebastian创建的,他也创建了 Babel。
NAPI
napi-rs允许我们使用 Rust 构建预编译的 Node.js 附加组件。它提供了交叉编译和发布本地的二进制文件NPM一个彻头彻尾的现成的解决方案,而无需node-gyp或postinstall脚本。
我们可以构建一个可以直接从 Node.js 调用的 Rust 模块,而无需创建像 esbuild 这样的子进程。
WASM
WebAssembly ( WASM ) 是一种可移植的低级语言,Rust 可以编译成它。它在浏览器中运行,可与 JavaScript 互操作,并且在所有主要的现代浏览器中都受支持。
虽然 WASM 还不是完美的解决方案,但它可以帮助开发人员创建极快的 Web 体验。Rust 团队致力于高质量和前沿的 WASM 实现。对于开发人员来说,这意味着我们可以在仍然为 Web 编译(使用 WASM)的同时拥有 Rust(与 Go 相比)的性能优势。
这个领域的一些早期库和框架
- Yew
- Percy
- Seed
- Sycamore
- Stork
这些编译为 WASM 的基于 Rust 的 Web 框架并没有试图取代 JavaScript,而是与它一起工作。Rust 在追赶 Web:使现有的 JavaScript 工具更快, 以及 编译为 WASM 的未来想法。
可以看出Rust很有可能成为JavaScript基建的未来。
广东靓仔认为要成为JavaScript的未来,Rust有一些路要走,不过Rust已经具备了可扩展性、性能更好、Rust 对 WASM 的支持、社区很受欢迎。
接下里我们一起来敲响Rust的大门
三、Rust入门--安装
试用传送门:https://play.rust-lang.org/
Rustup
Rustup是安装 Rust 的主要工具,既是一个 Rust 安装器也是一个版本管理工具。
macOS、Linux 或其它类 Unix 系统安装:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
window安装参考:
https://forge.rust-lang.org/infra/other-installation-methods.html
卸载命令:
rustup self uninstall
Cargo
在安装 Rustup 时,我们也会安装 Rust 构建工具和包管理器的最新稳定版,也就是 Cargo。
- cargo build:用来构建项目
- cargo run:可以运行项目
- cargo test:用来测试项目
- cargo doc:可以为项目构建文档
- cargo publish:用来将库发布到 crates.io
检查我们是否安装了 Rust 和 Cargo,命令如下:
cargo --version
Rust 支持多种编辑器:
四、Rust入门--编写Demo
首先用 Cargo 创建一个新项目。我们在终端中执行如下命令:
cargo new hello-rust
然后我们会看到这样的目录:
hello-rust |- Cargo.toml // Rust 的清单文件。其中包含了项目的元数据和依赖库 |- src |- main.rs // 编写应用代码文件
运行
cargo run
结果
添加依赖
Rust仓库链接:https://crates.io/
在 Rust 中,习惯把包称作“crates”,接下来给我们的demo安装依赖:
Cargo.toml加入如下内容:
[dependencies] ferris-says = "0.2"
执行cargo build命令,Cargo会开始安装这个依赖,然后会生成Cargo.lock:记录了本地所用依赖库的精确版本。
main.rs使用ferris_says,内容如下:
use ferris_says::say;
我们已经可以使用 ferris-says crate 中导出的 say 函数了。
Demo
main.rs
use ferris_says::say; // from the previous step use std::io::{stdout, BufWriter}; fn main() { let stdout = stdout(); let message = String::from("Hello 广东靓仔"); let width = message.chars().count(); let mut writer = BufWriter::new(stdout.lock()); say(message.as_bytes(), width, &mut writer).unwrap(); }
运行
cargo run
可以看到如下结果:
---------------------------- < Hello 广东靓仔 > ---------------------------- \ \ _~^~^~_ \) / o o \ (/ '_ - _' / '-----' \
到此我们已经算是敲响了Rust的大门,接下来有兴趣可以进一步去学习
五、总结
推荐进一步学习:https://www.rust-lang.org/learn