Rust Web 全栈开发之编写 WebAssembly 应用
MDN Web Docs:https://developer.mozilla.org/zh-CN/docs/WebAssembly
官网:https://webassembly.org/
项目结构 和 功能
Web App 教师注册 WebService WebAssembly App 课程管理
什么是 WebAssembly
- WebAssembly 是一种新的编码方式,可以在现代浏览器中运行
- 它是一种低级的类汇编语言
- 具有紧凑的二进制格式
- 可以接近原生的性能运行
- 并为 C/C ++ 、 C# 、 Rust 等语言提供一个编译目标,以便它们可以在 Web上运行
- 它也被设计为可以与 JavaScript 共存,允许两者一起工作。
机器码
- 机器码是计算机可直接执行的语言
- 汇编语言比较接近机器码
ASSEMBLY -> ASSEMBLER -> MACHINE CODE
机器码与 CPU 架构
- 不同的 CPU 架构需要不同的机器码和汇编
- 高级语言可以“翻译”成机器码,以便在 CPU 上运行
- SOURCE CODE
WebAssembly
- WebAssembly 其实不是汇编语言,它不针对特定的机器,而是针对浏览器的。
- WebAssembly 是中间编译器目标
- SOURCE CODE
WebAssembly 是什么样的?
WebAssembly 能做什么
- 可以把你编写 C/C++ 、 C# 、 Rust 等语言的代码编译成 WebAssembly 模块
- 你可以在 Web 应用中加载该模块,并通过 JavaScript 调用它
- 它并不是为了替代 JS ,而是与 JS 一起工作
- 仍然需要 HTML 和 JS ,因为WebAssembly 无法访问平台 API ,例如 DOM , WebGL...
WebAssembly 如何工作
Hello.c -> EMSCRIPTEN(编译器) -> hello.wasm hello.js hello.html
WebAssembly 的优点
- 快速、高效、可移植
- 通过利用常见的硬件能力, WebAssembly 代码在不同平台上能够以接近本地速度运行。
- 可读、可调试
- WebAssembly 是一门低阶语言,但是它有确实有一种人类可读的文本格式(其标准最终版本目前仍在编制),这允许通过手工来写代码,看代码以及调试代码。
- 保持安全
- WebAssembly 被限制运行在一个安全的沙箱执行环境中。像其他网络代码一样,它遵循浏览器的同源策略和授权策略。
- 不破坏网络
- WebAssembly 的设计原则是与其他网络技术和谐共处并保持向后兼容。
Rust WebAssembly 部分相关 crate
- wasm-bindgen
- wasm-bindgen-future
- web-sys
- js-sys
搭建环境
Rust 官网:https://www.rust-lang.org/zh-CN/what/wasm
Rust and WebAssembly:https://rustwasm.github.io/docs/book/
Rust和WebAssembly中文文档:https://rustwasm.wasmdev.cn/docs/book/
安装
wasm-pack
下载安装地址:https://rustwasm.github.io/wasm-pack/installer/
Install wasm-pack
You appear to be running a *nix system (Unix, Linux, MacOS). Install by running:- curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
复制代码 If you're not on *nix, or you don't like installing from curl, follow the alternate instructions below.
cargo-generate
cargo-generate helps you get up and running quickly with a new Rust project by leveraging a pre-existing git repository as a template.
Install cargo-generate with this command:- cargo install cargo-generate
复制代码 [code]~ via
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |