欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Rust開發(fā)WebAssembly在Html和Vue中的應用小結(推薦)

 更新時間:2022年08月05日 10:17:04   作者:一碼超人  
這篇文章主要介紹了Rust開發(fā)WebAssembly在Html和Vue中的應用,本文將帶領大家在普通html上和vue手腳架上都來運行wasm的流程,需要的朋友可以參考下

最初是由Mozilla研究院的Graydon Hoare設計創(chuàng)造,然后在Dave Herman, Brendan Eich以及很多其他人的貢獻下逐步完善的。Rust的設計者們通過在研發(fā)Servo網(wǎng)站瀏覽器布局引擎過程中積累的經(jīng)驗優(yōu)化了Rust語言和Rust編譯器。

我最大的感受

開始我是抵觸它的,原因很簡單,它太難學了!?。『煤ε抡Z法上影響我會的其他語言。不知道各位小伙伴是否有這樣的感受。

它的優(yōu)點也很直觀:

1、采用所有權機制,因此沒有垃圾回收器。

2、非空方案,保證其安全運行。

3、敢和C++對標性能的語言。

總的來說我用了2個月的時間研究它,能寫一些小東西,讓我感覺很舒服的是因它的機制生產(chǎn)的產(chǎn)物并沒有出現(xiàn)什么奇奇怪怪的問題。

Rust在web上的應用

WebAssembly或wasm是用于瀏覽器內(nèi)客戶端腳本的低級、可移植的字節(jié)碼格式,是一種運行在現(xiàn)代網(wǎng)絡瀏覽器中的新型代碼、并且提供新的性能特性和效果,對于瀏覽器下載和加載是有效的。

而且因為它是字節(jié)碼的原因所以并不想js開源,從速度和安全性來講都是碾壓js的。當然它的存在就像rust官網(wǎng)說的一樣,它不是來替代js,而是強化js!

本文主題

在咱們的站中,相關完整的示例太少了!最主要是vue手腳架中的應用幾乎沒有!所以本文將帶領大家在普通html上和vue手腳架上都來運行wasm的流程!

應用工具:HBuilder、CLion

1、創(chuàng)建一個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

寫兩個函數(shù)

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();
}
//計算兩個數(shù)相加
#[wasm_bindgen]
pub fn add(a:i32, b:i32) -> i32{
    return a+b;
}

編譯wasm

build --target web

等待吧!這是一個漫長的時刻!

再次點擊運行,生產(chǎn)成品。

內(nèi)涵了wasm文件與js膠水文件【js與wasm數(shù)據(jù)交互作用】

2、在Html中的應用

將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>

執(zhí)行wasm函數(shù)

3、vue3中的應用

將pkg扔進根目錄

執(zhí)行wasm函數(shù)

<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運行

完美執(zhí)行!

4、最近遇到的問題

目前用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開發(fā)WebAssembly在Html和Vue中的應用小結的文章就介紹到這了,更多相關Rust開發(fā)WebAssembly內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Rust中vector的詳細用法

    Rust中vector的詳細用法

    Rust和C++同樣也有vector概念,本文主要介紹了Rust中vector的詳細用法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-03-03
  • Rust 多線程編程的實現(xiàn)

    Rust 多線程編程的實現(xiàn)

    在rust中,多線程編程不算困難,但是也需要留心和別的編程語言中不同的地方,本文主要介紹了Rust 多線程編程的實現(xiàn),感興趣的可以了解一下
    2023-12-12
  • 淺談Rust?+=?運算符與?MIR?應用

    淺談Rust?+=?運算符與?MIR?應用

    這篇文章主要介紹了Rust?+=?運算符與?MIR?應用,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-01-01
  • 探索?Rust?中實用的錯誤處理技巧

    探索?Rust?中實用的錯誤處理技巧

    探索Rust中實用的錯誤處理技巧!Rust是一門靜態(tài)類型系統(tǒng)安全且高效的編程語言,但使用過程中難免會遇到各種錯誤,學會如何正確處理這些錯誤至關重要,本指南將為您提供一些實用的錯誤處理技巧,幫助您更好地編寫健壯的代碼,需要的朋友可以參考下
    2024-01-01
  • 解析Rust?struct?中的生命周期

    解析Rust?struct?中的生命周期

    rust?的生命周期保證了內(nèi)存的安全性,同時也增加了開發(fā)者的心智負擔。是在上線之前多費心思寫代碼,還是在上線以后忙忙活活查問題,這是個?trade?off?問題,這篇文章主要介紹了Rust?struct?中的生命周期,需要的朋友可以參考下
    2022-10-10
  • Rust標量類型的具體使用

    Rust標量類型的具體使用

    本文主要介紹了Rust標量類型的具體使用,其中包括整數(shù)類型、浮點類型、布爾類型以及字符類型,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • Rust語言之結構體和枚舉的用途與高級功能詳解

    Rust語言之結構體和枚舉的用途與高級功能詳解

    Rust 是一門注重安全性和性能的現(xiàn)代編程語言,其中結構體和枚舉是其強大的數(shù)據(jù)類型之一,了解結構體和枚舉的概念及其高級功能,將使你能夠更加靈活和高效地處理數(shù)據(jù),本文將深入探討 Rust 中的結構體和枚舉,并介紹它們的用途和高級功能
    2023-10-10
  • rust文件讀寫的實現(xiàn)示例

    rust文件讀寫的實現(xiàn)示例

    Rust語言提供了強大的文件讀寫庫,使得開發(fā)者可以更加方便地進行文件操作,并且其安全性可以有效避免文件操作中可能出現(xiàn)的風險,本文就來詳細的介紹了rust文件讀寫的實現(xiàn)示例,感興趣的可以了解一下
    2023-12-12
  • Rust語言從入門到精通系列之Iterator迭代器深入詳解

    Rust語言從入門到精通系列之Iterator迭代器深入詳解

    這篇文章主要為大家介紹了Rust語言從入門到精通系列之Iterator迭代器深入詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • Rust語言中級教程之指針

    Rust語言中級教程之指針

    Rust中共有三種類型的指針,分別為引用,解引用,智能指針,這篇文章主要介紹了Rust語言中級教程之指針,需要的朋友可以參考下
    2023-05-05

最新評論