使用rust编译成WebAssembly(wasm)文件实践
0 点赞
0 条评论
2934 次浏览
发布于 2021-11-20 13:49
WebAssembly (以下简称WASM)最近听到最多的,相对比较火的一个技术,目前支持 WASM 的语言比较多,其中使用 Rust 开发在开发效率和便捷性、包体积大小等方面还是有很大优势的,非常方便,实际上官方周边文档已经比较全面和友好了,社区活跃度也非常高。
WebAssembly特点
1、运行高效,编译后的二进制文件wasm,js加载运行效率是js的10倍
2、跨平台,跟js是没有任何耦合关系,用时加载,可移植性非常强
3、可以解决js一些关键技术性能瓶颈的问题
4、安全
安装rust工具链
1、安装rust rust下载地址
2、安装wasm-pack
cargo install wasm-pack
3、安装过程中需要的C++库 Visual Studio下载地址 选择安装C++
4、安装过程中可能会出现如下报错信息,安装Perl并重新打开命令行工具就好了 Perl下载地址
error: failed to run custom build command for openssl-sys v0.x.xx
使用cargo创建一个rust项目
cargo new hello
修改 src/lib.rs 文件
extern crate wasm_bindgen;
use wasm_bindgen::prelude::*;
#[wasm_bindgen]
extern {
pub fn alert(s: &str);
}
#[wasm_bindgen]
pub fn run(name: &str) {
alert(&format!("Hello, {}!", name));
}
修改 Cargo.toml 文件
[package]
name = "hello"
version = "0.1.0"
[lib]
crate-type = ["cdylib"]
[dependencies]
wasm-bindgen = "0.2"
编译成wasm
wasm-pack build
最终会在pkg目录下生成.wasm文件和其他文件
在JavaScript中调用
将hello_bg.js和hello_bg.wasm复制到项目中,然后调用
import('./hello_bg')
.then((wasm) => {
wasm.run('张三');
});
OK成功~
文档
"赞助我们,我们才能做的更多&更好"
赞助支持
还没有评论
写下你的评论...
最热文章
使用dart-sass替换node-sass
5192 浏览 · 0 评论
浏览器后退跳转到指定的页面
3866 浏览 · 0 评论
好玩的CSS3(3)-- 翻转(旋转正反两张)图片
3860 浏览 · 0 评论
Flutter适配夜间模式
3611 浏览 · 0 评论
pc端常用电脑屏幕分辨率尺寸适配
3570 浏览 · 0 评论
最新文章
js通过扫码枪快速录入的实现
406 浏览 · 0 评论
使用 WebSocket 实现你画我猜实时绘图
745 浏览 · 0 评论
基于code-server部署自己的云端vscode
2871 浏览 · 0 评论
支付宝动态收款码生成自定义金额及备注
2863 浏览 · 0 评论
使用 nohup 命令将程序挂载在后台执行
1959 浏览 · 0 评论
基于OpenLayers实现离线地图
2802 浏览 · 0 评论