国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JS > 正文

深入了解JavaScript 的 WebAssembly

2024-05-06 16:52:11
字體:
來源:轉載
供稿:網友

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%的代碼量。雖然這僅僅是一個原型。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 东乡县| 乌鲁木齐市| 四川省| 马边| 阿拉善左旗| 图木舒克市| 海口市| 潞城市| 阿拉善右旗| 扬州市| 天柱县| 友谊县| 江华| 滦南县| 泽州县| 贞丰县| 常宁市| 进贤县| 江安县| 轮台县| 金沙县| 新田县| 登封市| 区。| 彝良县| 温州市| 商洛市| 册亨县| 塘沽区| 锡林郭勒盟| 中西区| 怀来县| 宁安市| 印江| 盐源县| 江达县| 肃宁县| 广安市| 江西省| 蚌埠市| 东城区|