Rust Web 全栈开发之编写 WebAssembly 应用

打印 上一主题 下一主题

主题 918|帖子 918|积分 2754

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:
  1. 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:
  1. cargo install cargo-generate
复制代码
[code]~ via
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

去皮卡多

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表