您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關JavaScript中WebAssembly是什么的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
JavaScript 的 WebAssembly
本周發布的 Firefox 52 加入了對 WebAssembly 的支持,成為第一個支持 WebAssembly 標準的瀏覽器,而其它瀏覽器如 Chrome 57、Safari 和 Edge 也都會陸續支持 WebAssembly。WebAssembly 源于Mozilla 發起的 Asm.js 項目,設計補充而非取代 JavaScript,它是一個二進制格式,容易翻譯到原生代碼,本地解碼速度比 JS 解析快得多,讓高性能的 Web 應用在瀏覽器上運行成為可能,比如視頻游戲、計算機輔助設計、視頻和圖像編輯、科學可視化等等。
未來,現有的生產力應用和 JavaScript 框架都有可能使用 WebAssembly,能顯著降低加載速度,同時改進運行性能。開發者可以將針對 CPU 密集計算的 WebAssembly 庫整合到現有的 Web 應用中。
你聽說過 WebAssembly 嗎?這是由 Google , Microsoft , Mozilla , Apple 等幾家大公司合作發起的一個關于 面向Web的通用二進制和文本格式 的項目。 現在就讓我們來看看WebAssembly到底是個啥?為什么它的出現和未來的發展跟我們每個人都息息相關,即使你并不是一個程序猿/媛~
至少在某種程度上,它將改變Web生態。
JavaScript–Web世界的匯編語言
我們有許多面向Web應用的開發規范,這些設計優良的規范讓Web開發者們的工作變得更加的簡單。我們很難想象自己所創建和網站或應用沒有任何規則、編程語言、框架和開發理念可以遵循。
而將所有這些事情組合到一起的Web規范有一個眾所周知的名字: JavaScript !
JavaScript基本上已經成為了Web平臺的標準開發語言。而隨著越來越多的軟件成為了Web應用,JavaScript更是獲得了極大的發展。
但在過去幾年,我們看到越來越多的項目問世,它們試圖通過開發編譯程序,將其他語言代碼轉化為 JavaScript,以此讓開發者克服 JavaScript自身存在的一些短板。其中一些項目專注于給編程語言增加新的功能,比如微軟的 TypeScript 和Google的 Dart ,或是加快 JavaScript的執行速度,例如 Mozilla 的 asm.js 項目和Google的 PNaCI 。
在默認環境下,JavaScript文檔其實就是簡單的文本文件,先是從服務器下載,然后由瀏覽器中的 JavaScript引擎解析并編譯。用戶可以通過Ajax技術在瀏覽網頁時與服務器進行通信。
在瀏覽器端目前是使用JavaScript來實現與用戶進行動態交互等功能,雖然很多JavaScript框架都致力于性能優化,但是一套基于字節碼的系統仍然會有更快更好的性能表現。
所以,WebAssembly到底是個什么鬼?
WebAssembly是一種新的字節碼格式。它的縮寫是".wasm", .wasm 為文件名后綴,是一種新的底層安全的二進制語法。。它被定義為“精簡、加載時間短的格式和執行模型”,并且被設計為Web 多編程語言目標文件格式。
這意味著瀏覽器端的性能會得到極大提升,它也使得我們能夠實現一個底層構建模塊的集合,例如,強類型和塊級作用域。(原文: And it gives us access to a set of low level building blocks, such as a range of types and operations. 這句話我實在不知如何翻譯。。。)
不過別搞錯了,這并不意味著WebAssmbly是為了取代 JavaScript而生喲~ 就像Bjarne Stroustup說的:“JS會活得很好,因為世界上只有兩種類型的語言:一類語言被人們不斷的地吐槽,而另一類語言壓根兒沒人用!”而 Eric Elliott 認為:“最好不要把WebAssembly僅僅當做一門編程語言,實際上它更像是一個編譯器。”
從asm.js到WebAssembly?
asm.js 是一個JavaScript的一個嚴格的子集,可以被用來作為一個底層的、高效的編譯器目標語言。asm.js提供了一個類似于C/C++虛擬機的抽象實現,包括一個可有效負載和存儲的大型二進制堆、整型和浮點運算、高階函數定義、函數指針等。
asm.js的思想是使用它所規定的方法來編寫JavaScript代碼,支持asm.js的引擎會將代碼轉變為十分高效的機器碼。如果你是將C++代碼編譯為asm.js,將在瀏覽器端獲得極大的性能提升。webassembly相較于asm.js的優勢主要是涉及到性能方面。根據 WebAssembly FAQ 的描述:在移動設備上,對于很大的代碼庫,asm.js僅僅解析就需要花費20-40秒,而 實驗 顯示WebAssembly的加載速度比asm.js快了20倍,這主要是因為相比解析 asm.js 代碼,JavaScript引擎破譯二進制格式的速度要快得多。
這玩意兒到底好在哪?
你很可能會問:“為啥所有人都在談論WebAssembly?”這是因為WebAssembly對于JS來說絕對是一個巨大的改進,但我們常常會問自己:“這樣,就夠了嗎?”當然不是,WebAssembly對于瀏覽器來說也有著非同一般的意義。 支持WebAssembly的瀏覽器可以識別二進制格式的文本,它有能力編譯比JS文本小得多的二進制包。 這將給web應用帶來類似與本地應用的性能體驗!這四不四聽起來很棒啊?!如果瀏覽器不得不解析完整的JS代碼,這將會耗去好多時間(特別是在移動平臺上),而瀏覽器對WebAssembly格式的解碼速度顯然要快得多得多得多:) 下面獻上JS作者BE大神的演講視頻地址(油管,需FQ): Brendan Eich on JavaScript Taking Both the High and Low Roads - O'Reilly Fluent 2014
都有誰入了WebAssembly的坑?
包括Google, Microsoft,Mozilla只是這一長串名單中的少數幾家公司。項目帶頭人們發起了 WebAssembly Community Group 這一社區,這個團隊的愿景是“在一種新的,輕量的web編碼格式的基礎上,促進瀏覽器廠商們的合作.” 不過,WebAssembly項目還只是剛剛啟動,雖然它有一個美妙的開頭,但在WebAssembly成為一個大眾認可的web標準之前,它還有很長的路要走。
為啥這玩意會影響每一個web開發者
因為webassembly讓開發者有能力選擇之前那些不能用來開發web應用的語言來進行web開發,或者他們也可以繼續使用簡單易用的JavaScript! W3C WebAssembly Community group 給出了一些WebAssembly的用例,它們展示了WebAssembly如何使得web開發者更加輕松的工作:
一些執行效率更高的語言可以被編譯成在Web平臺上執行的代碼。
提供了在瀏覽器端的開發者工具
更加快捷的企業級應用客戶端(例如:數據庫)
WebAssembly的用途很多。舉幾個栗子:WebAssembly可以被嵌入到已經開發好的JavaScript/HTML代碼中;或者某款應用的主要框架可以使用 WebAssembly 模塊(如動畫、可視化和壓縮等),而用戶界面仍然可以主要使用 JavaScript/HTML語言編寫。
精簡的代碼,更好的性能,更少的bug?
據WebAssembly的開發團隊描述,使用WebAssembly意味著更少的原代碼。與asm.js相比,它減少了大約25%的代碼量。雖然這僅僅是一個原型。
感謝各位的閱讀!關于“JavaScript中WebAssembly是什么”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。