ToB企服应用市场:ToB评测及商务社交产业平台
标题:
Rust Web 全栈开发之编写 WebAssembly 应用
[打印本页]
作者:
去皮卡多
时间:
2023-6-4 15:48
标题:
Rust Web 全栈开发之编写 WebAssembly 应用
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
x64
x86
ARM
WebAssembly
WebAssembly 其实不是汇编语言,它不针对特定的机器,而是针对浏览器的。
WebAssembly 是中间编译器目标
SOURCE CODE
WASM
x64
x86
ARM
WebAssembly 是什么样的?
文本格式 .wat
二进制格式: .wasm
WebAssembly 能做什么
可以把你编写 C/C++ 、 C# 、 Rust 等语言的代码编译成 WebAssembly 模块
你可以在 Web 应用中加载该模块,并通过 JavaScript 调用它
它并不是为了替代 JS ,而是与 JS 一起工作
仍然需要 HTML 和 JS ,因为WebAssembly 无法访问平台 API ,例如 DOM , WebGL...
WebAssembly 如何工作
这是 C/C++ 的例子
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
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4