当前位置: 首页 > news >正文

山东省住房和建设网站江都建设银行网站

山东省住房和建设网站,江都建设银行网站,东阿网站制作,有专门做网站的公司一、参考资料 参考官方技术文档 https://rustwasm.github.io/ 二、安装脚手架 cargo-generate # cargo-generate 用于快速生成 WASM 项目的脚手架(类似 create-react-app) cargo install cargo-generate 三、下载安装 wasm-pack.exe 打包工具 双击安装…

一、参考资料

参考官方技术文档 https://rustwasm.github.io/

二、安装脚手架 cargo-generate

# cargo-generate 用于快速生成 WASM 项目的脚手架(类似 create-react-app)
cargo install cargo-generate

三、下载安装 wasm-pack.exe 打包工具 

 双击安装之后在 Cargo 根路径下多出一个 wasm-pack.exe 

四、创建一个 WASM 项目

# 使用模板生成
cargo generate --git https://github.com/rustwasm/wasm-pack-template# 使用文档 GitHub - cargo-generate/cargo-generate: cargo, make me a project# templates on github
cargo generate --git https://github.com/username-on-github/mytemplate.git# or just
cargo generate username-on-github/mytemplate# templates on other git platforms
cargo generate gl:username-on-gitlab/mytemplate
cargo generate bb:username-on-bitbucket/mytemplate# this scheme is also available for github
cargo generate gh:username-on-github/mytemplate# for a complete list of arguments and options
cargo help generate

 在项目目录下运行 wasm-pack build 命令,即可编译出 WASM 模块。wasm-pack 会在项目的 pkg 目录下生成 .wasm 文件和相关的 js 胶水代码。

wasm-pack build --target web

五、创建一个Vue项目 

# VueCli,弃用
# vue create -m cnpm webdemo
# 使用 Vite
cnpm create vite@latest

六、引用 wasm 模块

<script setup lang="ts">
import { onMounted, ref } from 'vue'import init, { greet } from '../../pkg/mydemo.js'defineProps<{ msg: string }>()const count = ref(0)onMounted(async () => {await init()greet()
})

将 pkg 复制到前端根目录下。 

七、运行测试

八、 序列化与出入参

> js-sys 用于将 Rust 类型 => JS 类型
> wasm_bindgen 中的 JsValue 用于将 JS 类型 => Rust 类型
// 示例一
#[wasm_bindgen]
pub extern "C" fn gen_pubKey(seed: &[u8]) -> Uint8Array {let (privKey, pubKey) = ed25519::keypair(&seed);unsafe { Uint8Array::view(&pubKey) }
}// 示例二
extern crate serde_json;
extern crate wasm_bindgen;
use wasm_bindgen::prelude::*;#[macro_use]
extern crate serde_derive;
#[wasm_bindgen]
pub fn test(array: JsValue) {let elements: Vec<u32> = array.into_serde().unwrap();
}// 示例三
pub extern "C" fn greet(a: &str) -> String {format!("Hello, {}!", a)
}
#[export_name = "greet"]
pub extern "C" fn __wasm_bindgen_generated_greet(arg0_ptr: *const u8,arg0_len: usize,
) -> *mut String {let arg0 = unsafe {let slice = ::std::slice::from_raw_parts(arg0_ptr, arg0_len);::std::str::from_utf8_unchecked(slice)};let _ret = greet(arg0);Box::into_raw(Box::new(_ret))
}// 示例四
#[wasm_bindgen]
pub fn get_printers() -> js_sys::Array {let list = js_sys::Array::new();let printers = printers::get_printers();for printer in printers.clone() {list.push(&js_sys::JsString::from(printer.name));}list
}
// 示例五
extern crate serde_json;
extern crate wasm_bindgen;
use wasm_bindgen::prelude::*;
#[macro_use]
extern crate serde_derive;
#[derive(Serialize, Deserialize)]
pub struct Element {name: String,id: String,parent_id: String,
}#[wasm_bindgen]
pub fn test(js_objects: &JsValue) {let elements: Vec<Element> = js_objects.into_serde().unwrap();
}

九、WASM 安全性【OS 资源访问限制】

WASM 想要执行 WindowOS 的一些脚本,抛出平台不支持异常;

WASM 是运行于浏览器当中,而浏览器本身设计为没有权限访问OS资源,这是出于安全考虑。
通过设计,WebAssembly模块运行所在的环境与基础主机系统的本机功能完全隔离(或沙盒化)。这意味着默认情况下,Wasm模块被设计为仅执行纯计算。
因此,通常无法从WASM访问“ OS”级资源,例如文件描述符,网络套接字,系统时钟和随机数。但是,在许多情况下,Wasm模块需要执行的工作不仅仅是执行纯计算。它们必须与本机“ OS”功能交互。 因此一群天才们提出了使用 WASI 操作 OS 资源,并且能够独立在浏览器之外运行,下一篇文章再做一个Rust + WASI 的 DEMO。

http://www.15wanjia.com/news/189592.html

相关文章:

  • 头像制作免费模板南京seo建站
  • 重庆专业网站推广平台在哪里看片可以免费
  • 网站建设费 科目wordpress 买数据库
  • 徐州网站建设 徐州网站推广我想做网络推广
  • 哪些网站是做色选机销售的amz123
  • 贵州两学一做网站wordpress壁纸主题下载失败
  • 浏阳商务局网站溪江农贸市场建设收费抽奖网站
  • 上海网站建设报价表怎么制作动漫视频教程
  • 邯郸模板建站教程成都倒闭的网站建设公司名单
  • 免费在线观看电影电视剧网站网站建设策划案怎么写
  • 怎样做php网站武昌做网站报价
  • 成都企业如何建网站宿州注册公司多少钱
  • 用CMS做网站的好处公众号模板免费
  • 网站页头设计坑梓网站建设咨询
  • 济南哪里有网站公司wordpress子模板
  • 广州 网站 设计设计手绘
  • 企业网站代维护怎样做网络推广链接
  • 没有网站备案可以做诚信认证嘛优秀网站设计要素
  • 个人网站设计模板素材seo数据是什么意思
  • 怎样建立自己的网站赚钱济源做网站公司
  • 怎样自己做网页设计网站巅云建站
  • 简单网站建设合同wordpress网站换字体颜色
  • 网站模板源码免费下载赣州网上房地产官网
  • 有哪个网站有免费视频素材中国第一网页游戏开服表
  • 深圳做网站案例网站商品图片怎么做
  • 西安企业自助建站系统常用的设计网站有哪些
  • 高端大气企业网站模板手机怎样翻墙上外国网
  • 一个域名做两个网站可以么四川住建管理平台官网
  • 手机网站建站公司开网站需要多少钱
  • 浏览器网站入口网站如何添加统计代码是什么