摘要:工作原理分點(diǎn)介紹官方解讀它可以從各類現(xiàn)有的其他高級(jí)語(yǔ)言寫(xiě)的業(yè)務(wù)庫(kù)編譯而來(lái),比如下文提到的庫(kù),就是一種語(yǔ)言編寫(xiě)的剛體動(dòng)力學(xué)與碰撞檢測(cè)計(jì)算的庫(kù)。
1、WebAssembly工作原理 分點(diǎn)介紹
它可以從各類現(xiàn)有的其他高級(jí)語(yǔ)言寫(xiě)的業(yè)務(wù)庫(kù)編譯而來(lái),比如下文提到的bullet庫(kù),就是一種C++語(yǔ)言編寫(xiě)的剛體動(dòng)力學(xué)與
碰撞檢測(cè)計(jì)算的庫(kù)。根據(jù)調(diào)研,還有Haskell、Go、C#的語(yǔ)言的一些WebAssembly編譯工具或者已經(jīng)編譯成的WebAssembly代碼庫(kù),
OK,既然是經(jīng)過(guò)編譯而得來(lái),可以將WebAssembly理解為是該庫(kù)的低級(jí)語(yǔ)言代碼版本,是一種類匯編語(yǔ)言。
可以把它理解成一個(gè)ES6語(yǔ)法寫(xiě)的js模塊,既可以有導(dǎo)入又有導(dǎo)出,也可以沒(méi)有導(dǎo)入只有導(dǎo)出。
WebAssembly文件格式與源碼閱讀->.wasm文件和.wast文件
WebAssembly代碼存儲(chǔ)在.wasm文件內(nèi),這類文件是要瀏覽器直接執(zhí)行的。
因?yàn)?wasm文件內(nèi)是二進(jìn)制文件,難以閱讀,為了方便開(kāi)發(fā)者查看,官方給出了對(duì).wasm文件的閱讀方法,
通過(guò)把.wasm文件通過(guò)工具轉(zhuǎn)為.wast的文本格式,開(kāi)發(fā)者可以在一定程度上理解這個(gè).wast文件。
.wast文件是通過(guò)S-表達(dá)式(一種類似lisp語(yǔ)言的代碼書(shū)寫(xiě)風(fēng)格)來(lái)寫(xiě)成的,
至于怎么讀懂S-表達(dá)式,請(qǐng)去看官方介紹。
.wast文件和.wasm文件的關(guān)系,他們之間的相互轉(zhuǎn)化,可以通過(guò)工具wabt(https://github.com/WebAssembl...)
實(shí)現(xiàn)。
某高級(jí)語(yǔ)言寫(xiě)的某功能庫(kù)-->emscripten編譯-->.wasm文件-->結(jié)合WebAssembly JS API-->瀏覽器中運(yùn)行
完成一部分 用js寫(xiě),而后依靠瀏覽器解釋執(zhí)行,會(huì)比較消耗性能 的工作,比如視頻解碼,OpenGL,OpenCV等。
簡(jiǎn)單來(lái)說(shuō),加載運(yùn)行wasm代碼的過(guò)程如下圖所示。
得到wasm文件后,就可以使用js加載該模塊,實(shí)例化該模塊,運(yùn)行該模塊中的函數(shù)。
如上,通過(guò)js調(diào)用這兩個(gè)c語(yǔ)言方法,瀏覽器運(yùn)行,控制臺(tái)打印出正確結(jié)果。
5、基于WebAssembly模塊庫(kù)ammo.js的Demo Demo介紹基于three.js構(gòu)建了三維場(chǎng)景,場(chǎng)景中有一個(gè)圖片紋理拼成的ground地面,和兩個(gè)THREE.Mesh()方法創(chuàng)建的
球體,這兩個(gè)球體在地面上一左一右有固定的位置。
然后使用ammo構(gòu)建了一個(gè)剛體動(dòng)力學(xué)環(huán)境,這是一個(gè)有重力、考慮物體慣性等的物理環(huán)境,在這個(gè)環(huán)境中創(chuàng)建了
一個(gè)球體(界面中不可見(jiàn)),給該球體設(shè)置了一些剛體動(dòng)力學(xué)的參數(shù),如平移、旋轉(zhuǎn)等,設(shè)置完這些參數(shù)再使用相反的
API獲取這些參數(shù),然后把這些參數(shù)賦給three.js創(chuàng)建的第二個(gè)球體(圖1中右邊那個(gè)),一秒后重新渲染threejs場(chǎng)景,該球體
則獲得了一個(gè)平移的參數(shù),移動(dòng)到相應(yīng)的(本例中是更靠右)的位置。
圖1 使用ammo庫(kù)前
圖2 調(diào)用ammo相關(guān)代碼后
Demo源代碼地址https://github.com/cunzaizhuy...
如需測(cè)試使用,請(qǐng)注意替換掉以下兩行
本Demo參考鏈接
(1)Bullet類庫(kù)API http://bulletphysics.org/Bull...
(2)Ammo庫(kù)地址 https://github.com/kripken/am...
6、WebAssembly資源推薦(1)英文官網(wǎng) http://webassembly.org/
(2)中文官網(wǎng) http://webassembly.org.cn/
(3)MDN網(wǎng)址 https://developer.mozilla.org...
(4)資料齊全 https://github.com/mbasso/awe...
(5)一篇講解詳細(xì)的博客 https://segmentfault.com/a/11...
(6)一篇講解詳細(xì)的博客 https://segmentfault.com/a/11...
(7)有編譯工具鏈簡(jiǎn)單介紹 http://geek.csdn.net/news/det...
(0)本篇博客中的一些資源 https://github.com/cunzaizhuy...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/91843.html
摘要:前端每周清單專注前端領(lǐng)域內(nèi)容,以對(duì)外文資料的搜集為主,幫助開(kāi)發(fā)者了解一周前端熱點(diǎn)分為新聞熱點(diǎn)開(kāi)發(fā)教程工程實(shí)踐深度閱讀開(kāi)源項(xiàng)目巔峰人生等欄目。利用降低三倍加載速度自推出之后,很多開(kāi)發(fā)者都開(kāi)始嘗試在小型項(xiàng)目中實(shí)踐,不過(guò)尚缺大型真實(shí)案例比較。 前端每周清單專注前端領(lǐng)域內(nèi)容,以對(duì)外文資料的搜集為主,幫助開(kāi)發(fā)者了解一周前端熱點(diǎn);分為新聞熱點(diǎn)、開(kāi)發(fā)教程、工程實(shí)踐、深度閱讀、開(kāi)源項(xiàng)目、巔峰人生等欄目...
摘要:但是為什么執(zhí)行的更快呢在這個(gè)系列文章中,我會(huì)為你解釋這一點(diǎn)。所以當(dāng)人們說(shuō)更快的時(shí)候,一般來(lái)講是與相比而言的。被人們廣為傳播的性能大戰(zhàn)在年打響。性能的提升使得的應(yīng)用范圍得到很大的擴(kuò)展?,F(xiàn)在通過(guò),我們很有可能正處于第二個(gè)拐點(diǎn)。 作者:Lin Clark 編譯:胡子大哈 翻譯原文:http://huziketang.com/blog/posts/detail?postId=58ce8036...
摘要:但是它們其實(shí)并不是二選一的關(guān)系并不是只能用或者。正因?yàn)槿绱?,指令有時(shí)也被稱為虛擬指令。這是因?yàn)槭遣捎没跅5奶摂M機(jī)的機(jī)制。聲明模塊的全局變量。。下文預(yù)告現(xiàn)在你已經(jīng)了解了模塊的工作原理,下面將會(huì)介紹為什么運(yùn)行的更快。 作者:Lin Clark 編譯:胡子大哈 翻譯原文:http://huziketang.com/blog/posts/detail?postId=58c77641a6d8...
摘要:并且于年月日,四個(gè)主要的瀏覽器一致同意宣布的版本已經(jīng)完成,即將推出一個(gè)瀏覽器可以搭載的穩(wěn)定版本。因此本文著重介紹為什么比更快。本文主要表達(dá)的是為什么應(yīng)該是更快的。則不同,它是由幾大主要的瀏覽器廠商共同設(shè)計(jì)的。 作者:Alon Zakai 編譯:胡子大哈 翻譯原文:http://huziketang.com/blog/posts/detail?postId=58ce80d2a6d8a0...
摘要:圖表中的比例并不代表真實(shí)情況下的確切比例情況。解析當(dāng)?shù)竭_(dá)瀏覽器時(shí),源代碼就被解析成了抽象語(yǔ)法樹(shù)。解析過(guò)后抽象語(yǔ)法樹(shù)就變成了中間代碼叫做字節(jié)碼,提供給引擎編譯。目前為止,不支持垃圾回收。這就是為什么在大多數(shù)情況下,同一個(gè)任務(wù)比表現(xiàn)更好的原因。 作者:Lin Clark 編譯:胡子大哈 翻譯原文:http://huziketang.com/blog/posts/detail?postId...
閱讀 2984·2023-04-26 01:49
閱讀 2106·2021-10-13 09:39
閱讀 2320·2021-10-11 11:09
閱讀 951·2019-08-30 15:53
閱讀 2844·2019-08-30 15:44
閱讀 950·2019-08-30 11:12
閱讀 3023·2019-08-29 17:17
閱讀 2407·2019-08-29 16:57