菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
119
0

[WASM Rust] Create and Publish a NPM Package Containing Rust Generated WebAssembly using wasm-pack

原创
05/13 14:22
阅读数 23251

wasm-pack is a tool that seeks to be a one-stop shop for building and working with Rust generated WebAssembly that you would like to interop with JavaScript. This includes ability to publish modules so that you can share your Rust generated WebAssembly code with others.

In this lesson we create a npm package and export a Rust function that will log to the console in the browser. We publish the module to NPM and afterwards use a rust-webpack-template to install and use the newly published package.

 

Create a new wasm lib:

cargo new my-wasm-lib --lib

 

Update Cargo.toml:

[package]
name = "my-wasm-lib"
version = "0.1.0"
authors = []
edition = "2018"

[lib]
crate-type = ["cdylib"]

[dependencies]
wasm-bindgen = "0.2"

 

lib.rs:

extern crate wasm_bindgen;

use wasm_bindgen::prelude:;*;

#[wasm_bindgen]
extern {
  #[wasm_bindgen(js_namespace = console)]
  fn log(msg: &str);
}

#[wasm_bindgen]
pub fn greet(name: &str) {
  log(&format!("Hello {}!", name));
}

 

Run:

wasm-pack build

This creates a package directory. In previous lessons, I mentioned that it contains a WASM and a Javascript file. What I haven't mentioned yet is that it also creates a package.json based on our Cargo.toml.

 

Publish:

wasm-pack publish

 

Then inside another wasm project:

Install:

npm install --save my-wasm-lib1215  # package name

 

Open index.js:

import("my-wasm-lib1215").then(module => {
  module.greet("World!@");
})

Run:

npm start

In the broswer console, you can see the msg:

Hello World!@!

发表评论

0/200
119 点赞
0 评论
收藏