mac + wasm + rust 環(huán)境搭建

1.安裝rustup

打開終端執(zhí)行下面命令

 $ curl https://sh.rustup.rs -sSf | sh

重要:如果你沒有翻墻弦牡,會發(fā)現(xiàn)安裝不了

error: could not download file from 'https://static.rust-lang.org/dist/channel-rust-stable.toml' to '/Users/apple/.rustup/tmp/x3tlzua732gf0u19_file.toml'
info: caused by: error reading from socket
info: caused by: timed out

解決方法: 電腦連上手機(jī)熱點,再執(zhí)行命令curl https://sh.rustup.rs -sSf | sh

image.png

輸入1并回車

image.png

這說明已經(jīng)安裝完成漂羊,執(zhí)行下面命令使環(huán)境變量生效:

$ source $HOME/.cargo/bin

檢查rust環(huán)境變量是否生效:

$ rustc --version
image.png

2.創(chuàng)建config文件驾锰,路徑為$HOME/.cargo/config,加入以下內(nèi)容

[source.crates-io]

registry = "https://github.com/rust-lang/crates.io-index"

# replace with your favourite mirror

replace-with = 'sjtu'

[source.ustc]

registry = "git://mirrors.ustc.edu.cn/crates.io-index"

[source.sjtu]

registry = "https://mirrors.sjtug.sjtu.edu.cn/git/crates.io-index"
![image.png](https://upload-images.jianshu.io/upload_images/9960789-b07789080ae1b41f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

[source.rustcc]

registry = "https://code.aliyun."

3.安裝 cargo-generate

cargo-generate 是一個用于快速生成 WASM 項目的腳手架(類似 vue-cli)

$ cargo install cargo-generate

4.安裝 wasm-pack

wasm-pack 用于將 Rust 項目打包成單個 WASM 文件(類似 Webpack)走越,是wasm的打包工具

$ cargo install wasm-pack

5.創(chuàng)建wasm + rust項目

5.1 在根目錄通過創(chuàng)建工具創(chuàng)建一套rust的模板代碼, 命名為wasm-project
$ cargo generate --git https://github.com/rustwasm/wasm-pack-template

目錄如下


image.png

在這個項目的根目錄下執(zhí)行構(gòu)建命令來編譯我們的wasm文件

$ wasm-pack build

隨后生成了pkg文件夾椭豫,這下面就是我們的wasm項目編譯出來的文件


image.png
5.2 隨后我們創(chuàng)建一個文件來測試生成的wasm文件,在這個目錄下創(chuàng)建package.json文件
{

    "name": "wasm-project",
    "version": "0.1.0",
    "main": "index.js",
    "scripts": {
      "build": "webpack --config webpack.config.js",
      "start": "webpack-dev-server --open"
    },
    "devDependencies": {
      "hello-wasm-pack": "^0.1.0",
      "webpack": "^4.16.3",
      "webpack-cli": "^3.1.0",
      "webpack-dev-server": "^3.1.5",
      "copy-webpack-plugin": "^4.5.2"
    }
  }
5.3 在這個目錄下創(chuàng)建webpack.config.js文件
const CopyWebpackPlugin = require("copy-webpack-plugin");
const path = require('path');
module.exports = {
  entry: "./test_wasm.js",
  output: {
    path: path.resolve(__dirname, "dist"),
    filename: "test_wasm.js",
  },
  mode: "development",
  plugins: [
    new CopyWebpackPlugin(['index.html'])
  ],
};
5.4 創(chuàng)建test_wasm.js
import("./index.js")
  .catch(e => console.error("Error importing `index.js`:", e));
5.5 創(chuàng)建index.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>hello rust</title>
</head>
<body>
    <script src="./test_wasm.js"></script>
</body>
</html>
5.6 創(chuàng)建index.js
import * as wasm from "./pkg/wasm_project_bg.wasm";

wasm.greet()
5.7 執(zhí)行wasm-project項目
$ sudo npm install
$ npm start
5.8 在瀏覽器訪問 http://localhost:8080/可以看到彈框
image.png

一個簡單的用rust寫的wasm項目運行起來了~

end------------------------------------------------------------------

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末买喧,一起剝皮案震驚了整個濱河市捻悯,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌淤毛,老刑警劉巖今缚,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異低淡,居然都是意外死亡姓言,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進(jìn)店門蔗蹋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來何荚,“玉大人,你說我怎么就攤上這事猪杭〔吞粒” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵皂吮,是天一觀的道長戒傻。 經(jīng)常有香客問我,道長蜂筹,這世上最難降的妖魔是什么需纳? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮艺挪,結(jié)果婚禮上不翩,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好口蝠,可當(dāng)我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布器钟。 她就那樣靜靜地躺著,像睡著了一般亚皂。 火紅的嫁衣襯著肌膚如雪俱箱。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天灭必,我揣著相機(jī)與錄音,去河邊找鬼乃摹。 笑死禁漓,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的孵睬。 我是一名探鬼主播播歼,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼掰读!你這毒婦竟也來了秘狞?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤蹈集,失蹤者是張志新(化名)和其女友劉穎烁试,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體拢肆,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡减响,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了郭怪。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片支示。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖鄙才,靈堂內(nèi)的尸體忽然破棺而出颂鸿,到底是詐尸還是另有隱情,我是刑警寧澤攒庵,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布嘴纺,位于F島的核電站,受9級特大地震影響叙甸,放射性物質(zhì)發(fā)生泄漏颖医。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一裆蒸、第九天 我趴在偏房一處隱蔽的房頂上張望熔萧。 院中可真熱鬧,春花似錦、人聲如沸佛致。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽俺榆。三九已至感昼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間罐脊,已是汗流浹背定嗓。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留萍桌,地道東北人宵溅。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像上炎,于是被迫代替她去往敵國和親恃逻。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,786評論 2 345