<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
最初是由Mozilla研究院的Graydon Hoare設計創造,然後在Dave Herman, Brendan Eich以及很多其他人的貢獻下逐步完善的。Rust的設計者們通過在研發Servo網站瀏覽器佈局引擎過程中積累的經驗優化了Rust語言和Rust編譯器。
開始我是抵觸它的,原因很簡單,它太難學了!!!好害怕語法上影響我會的其他語言。不知道各位小夥伴是否有這樣的感受。
它的優點也很直觀:
1、採用所有權機制,因此沒有垃圾回收器。
2、非空方案,保證其安全執行。
3、敢和C++對標效能的語言。
總的來說我用了2個月的時間研究它,能寫一些小東西,讓我感覺很舒服的是因它的機制生產的產物並沒有出現什麼奇奇怪怪的問題。
WebAssembly或wasm是用於瀏覽器內使用者端指令碼的低階、可移植的位元組碼格式,是一種執行在現代網路瀏覽器中的新型程式碼、並且提供新的效能特性和效果,對於瀏覽器下載和載入是有效的。
而且因為它是位元組碼的原因所以並不想js開源,從速度和安全性來講都是碾壓js的。當然它的存在就像rust官網說的一樣,它不是來替代js,而是強化js!
在咱們的站中,相關完整的範例太少了!最主要是vue手腳架中的應用幾乎沒有!所以本文將帶領大家在普通html上和vue手腳架上都來執行wasm的流程!
設定Cargo
[package] name = "mylib" version = "0.1.0" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [lib] crate-type = ["cdylib"] [dependencies] wasm-bindgen = "0.2.78" base64 = "0.12.1" [package.metadata.wasm-pack.profile.release] wasm-opt = false
寫兩個函數
use wasm_bindgen::prelude::*; use base64::*; //解析base64 #[wasm_bindgen] pub fn my_str(s:String) -> String{ let s = base64::decode(s).unwrap(); return String::from_utf8(s.clone()).unwrap(); } //計算兩個數相加 #[wasm_bindgen] pub fn add(a:i32, b:i32) -> i32{ return a+b; }
編譯wasm
build --target web
等待吧!這是一個漫長的時刻!
再次點選執行,生產成品。
內涵了wasm檔案與js膠水檔案【js與wasm資料互動作用】
將pkg直接放入根目錄
<script type="module"> import init, {add, my_str} from "./pkg/mylib.js"; init().then(() => { console.log(add(1,2)) console.log(my_str("5LiA56CB6LaF5Lq6")) }); </script>
執行wasm函數
3、vue3中的應用
將pkg扔進根目錄
執行wasm函數
<script setup> import { ref, onMounted } from 'vue' import init, {add, my_str} from "../../pkg/mylib.js"; defineProps({ msg: String }) onMounted(async () => { await init() console.log(add(1,2)) console.log(my_str("5LiA56CB6LaF5Lq6")) }) const count = ref(0) </script>
npm run dev執行
完美執行!
目前用vue2的還是比較多的,我引入後一直無法正常執行。
比如報錯:當前未啟用對實驗語法“importMeta”的支援
比如報錯:
WebAssembly module is included in initial chunk.
This is not allowed, because WebAssembly download and compilation must happen asynchronous.
Add an async splitpoint (i. e. import()) somewhere between your entrypoint and the WebAssembly module:
到此這篇關於Rust開發WebAssembly在Html和Vue中的應用小結的文章就介紹到這了,更多相關Rust開發WebAssembly內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45