這篇文章給大家分享的是有關(guān)JavaScript中WebAssembly是什么的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。
十余年的湘潭網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。網(wǎng)絡(luò)營(yíng)銷(xiāo)推廣的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整湘潭建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)從事“湘潭網(wǎng)站設(shè)計(jì)”,“湘潭網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。JavaScript 的 WebAssembly
本周發(fā)布的 Firefox 52 加入了對(duì) WebAssembly 的支持,成為第一個(gè)支持 WebAssembly 標(biāo)準(zhǔn)的瀏覽器,而其它瀏覽器如 Chrome 57、Safari 和 Edge 也都會(huì)陸續(xù)支持 WebAssembly。WebAssembly 源于Mozilla 發(fā)起的 Asm.js 項(xiàng)目,設(shè)計(jì)補(bǔ)充而非取代 JavaScript,它是一個(gè)二進(jìn)制格式,容易翻譯到原生代碼,本地解碼速度比 JS 解析快得多,讓高性能的 Web 應(yīng)用在瀏覽器上運(yùn)行成為可能,比如視頻游戲、計(jì)算機(jī)輔助設(shè)計(jì)、視頻和圖像編輯、科學(xué)可視化等等。
未來(lái),現(xiàn)有的生產(chǎn)力應(yīng)用和 JavaScript 框架都有可能使用 WebAssembly,能顯著降低加載速度,同時(shí)改進(jìn)運(yùn)行性能。開(kāi)發(fā)者可以將針對(duì) CPU 密集計(jì)算的 WebAssembly 庫(kù)整合到現(xiàn)有的 Web 應(yīng)用中。
你聽(tīng)說(shuō)過(guò) WebAssembly 嗎?這是由 Google , Microsoft , Mozilla , Apple 等幾家大公司合作發(fā)起的一個(gè)關(guān)于 面向Web的通用二進(jìn)制和文本格式 的項(xiàng)目。 現(xiàn)在就讓我們來(lái)看看WebAssembly到底是個(gè)啥?為什么它的出現(xiàn)和未來(lái)的發(fā)展跟我們每個(gè)人都息息相關(guān),即使你并不是一個(gè)程序猿/媛~
至少在某種程度上,它將改變Web生態(tài)。
JavaScript–Web世界的匯編語(yǔ)言
我們有許多面向Web應(yīng)用的開(kāi)發(fā)規(guī)范,這些設(shè)計(jì)優(yōu)良的規(guī)范讓W(xué)eb開(kāi)發(fā)者們的工作變得更加的簡(jiǎn)單。我們很難想象自己所創(chuàng)建和網(wǎng)站或應(yīng)用沒(méi)有任何規(guī)則、編程語(yǔ)言、框架和開(kāi)發(fā)理念可以遵循。
而將所有這些事情組合到一起的Web規(guī)范有一個(gè)眾所周知的名字: JavaScript !
JavaScript基本上已經(jīng)成為了Web平臺(tái)的標(biāo)準(zhǔn)開(kāi)發(fā)語(yǔ)言。而隨著越來(lái)越多的軟件成為了Web應(yīng)用,JavaScript更是獲得了極大的發(fā)展。
但在過(guò)去幾年,我們看到越來(lái)越多的項(xiàng)目問(wèn)世,它們?cè)噲D通過(guò)開(kāi)發(fā)編譯程序,將其他語(yǔ)言代碼轉(zhuǎn)化為 JavaScript,以此讓開(kāi)發(fā)者克服 JavaScript自身存在的一些短板。其中一些項(xiàng)目專(zhuān)注于給編程語(yǔ)言增加新的功能,比如微軟的 TypeScript 和Google的 Dart ,或是加快 JavaScript的執(zhí)行速度,例如 Mozilla 的 asm.js 項(xiàng)目和Google的 PNaCI 。
在默認(rèn)環(huán)境下,JavaScript文檔其實(shí)就是簡(jiǎn)單的文本文件,先是從服務(wù)器下載,然后由瀏覽器中的 JavaScript引擎解析并編譯。用戶可以通過(guò)Ajax技術(shù)在瀏覽網(wǎng)頁(yè)時(shí)與服務(wù)器進(jìn)行通信。
在瀏覽器端目前是使用JavaScript來(lái)實(shí)現(xiàn)與用戶進(jìn)行動(dòng)態(tài)交互等功能,雖然很多JavaScript框架都致力于性能優(yōu)化,但是一套基于字節(jié)碼的系統(tǒng)仍然會(huì)有更快更好的性能表現(xiàn)。
所以,WebAssembly到底是個(gè)什么鬼?
WebAssembly是一種新的字節(jié)碼格式。它的縮寫(xiě)是".wasm", .wasm 為文件名后綴,是一種新的底層安全的二進(jìn)制語(yǔ)法。。它被定義為“精簡(jiǎn)、加載時(shí)間短的格式和執(zhí)行模型”,并且被設(shè)計(jì)為Web 多編程語(yǔ)言目標(biāo)文件格式。
這意味著瀏覽器端的性能會(huì)得到極大提升,它也使得我們能夠?qū)崿F(xiàn)一個(gè)底層構(gòu)建模塊的集合,例如,強(qiáng)類(lèi)型和塊級(jí)作用域。(原文: And it gives us access to a set of low level building blocks, such as a range of types and operations. 這句話我實(shí)在不知如何翻譯。。。)
不過(guò)別搞錯(cuò)了,這并不意味著WebAssmbly是為了取代 JavaScript而生喲~ 就像Bjarne Stroustup說(shuō)的:“JS會(huì)活得很好,因?yàn)槭澜缟现挥袃煞N類(lèi)型的語(yǔ)言:一類(lèi)語(yǔ)言被人們不斷的地吐槽,而另一類(lèi)語(yǔ)言壓根兒沒(méi)人用!”而 Eric Elliott 認(rèn)為:“最好不要把WebAssembly僅僅當(dāng)做一門(mén)編程語(yǔ)言,實(shí)際上它更像是一個(gè)編譯器?!?/p>
從asm.js到WebAssembly?
asm.js 是一個(gè)JavaScript的一個(gè)嚴(yán)格的子集,可以被用來(lái)作為一個(gè)底層的、高效的編譯器目標(biāo)語(yǔ)言。asm.js提供了一個(gè)類(lèi)似于C/C++虛擬機(jī)的抽象實(shí)現(xiàn),包括一個(gè)可有效負(fù)載和存儲(chǔ)的大型二進(jìn)制堆、整型和浮點(diǎn)運(yùn)算、高階函數(shù)定義、函數(shù)指針等。
asm.js的思想是使用它所規(guī)定的方法來(lái)編寫(xiě)JavaScript代碼,支持asm.js的引擎會(huì)將代碼轉(zhuǎn)變?yōu)槭指咝У臋C(jī)器碼。如果你是將C++代碼編譯為asm.js,將在瀏覽器端獲得極大的性能提升。webassembly相較于asm.js的優(yōu)勢(shì)主要是涉及到性能方面。根據(jù) WebAssembly FAQ 的描述:在移動(dòng)設(shè)備上,對(duì)于很大的代碼庫(kù),asm.js僅僅解析就需要花費(fèi)20-40秒,而 實(shí)驗(yàn) 顯示W(wǎng)ebAssembly的加載速度比asm.js快了20倍,這主要是因?yàn)橄啾冉馕?asm.js 代碼,JavaScript引擎破譯二進(jìn)制格式的速度要快得多。
這玩意兒到底好在哪?
你很可能會(huì)問(wèn):“為啥所有人都在談?wù)揥ebAssembly?”這是因?yàn)閃ebAssembly對(duì)于JS來(lái)說(shuō)絕對(duì)是一個(gè)巨大的改進(jìn),但我們常常會(huì)問(wèn)自己:“這樣,就夠了嗎?”當(dāng)然不是,WebAssembly對(duì)于瀏覽器來(lái)說(shuō)也有著非同一般的意義。 支持WebAssembly的瀏覽器可以識(shí)別二進(jìn)制格式的文本,它有能力編譯比JS文本小得多的二進(jìn)制包。 這將給web應(yīng)用帶來(lái)類(lèi)似與本地應(yīng)用的性能體驗(yàn)!這四不四聽(tīng)起來(lái)很棒???!如果瀏覽器不得不解析完整的JS代碼,這將會(huì)耗去好多時(shí)間(特別是在移動(dòng)平臺(tái)上),而瀏覽器對(duì)WebAssembly格式的解碼速度顯然要快得多得多得多:) 下面獻(xiàn)上JS作者BE大神的演講視頻地址(油管,需FQ): Brendan Eich on JavaScript Taking Both the High and Low Roads - O'Reilly Fluent 2014
都有誰(shuí)入了WebAssembly的坑?
包括Google, Microsoft,Mozilla只是這一長(zhǎng)串名單中的少數(shù)幾家公司。項(xiàng)目帶頭人們發(fā)起了 WebAssembly Community Group 這一社區(qū),這個(gè)團(tuán)隊(duì)的愿景是“在一種新的,輕量的web編碼格式的基礎(chǔ)上,促進(jìn)瀏覽器廠商們的合作.” 不過(guò),WebAssembly項(xiàng)目還只是剛剛啟動(dòng),雖然它有一個(gè)美妙的開(kāi)頭,但在WebAssembly成為一個(gè)大眾認(rèn)可的web標(biāo)準(zhǔn)之前,它還有很長(zhǎng)的路要走。
為啥這玩意會(huì)影響每一個(gè)web開(kāi)發(fā)者
因?yàn)閣ebassembly讓開(kāi)發(fā)者有能力選擇之前那些不能用來(lái)開(kāi)發(fā)web應(yīng)用的語(yǔ)言來(lái)進(jìn)行web開(kāi)發(fā),或者他們也可以繼續(xù)使用簡(jiǎn)單易用的JavaScript! W3C WebAssembly Community group 給出了一些WebAssembly的用例,它們展示了WebAssembly如何使得web開(kāi)發(fā)者更加輕松的工作:
一些執(zhí)行效率更高的語(yǔ)言可以被編譯成在Web平臺(tái)上執(zhí)行的代碼。
提供了在瀏覽器端的開(kāi)發(fā)者工具
更加快捷的企業(yè)級(jí)應(yīng)用客戶端(例如:數(shù)據(jù)庫(kù))
WebAssembly的用途很多。舉幾個(gè)栗子:WebAssembly可以被嵌入到已經(jīng)開(kāi)發(fā)好的JavaScript/HTML代碼中;或者某款應(yīng)用的主要框架可以使用 WebAssembly 模塊(如動(dòng)畫(huà)、可視化和壓縮等),而用戶界面仍然可以主要使用 JavaScript/HTML語(yǔ)言編寫(xiě)。
精簡(jiǎn)的代碼,更好的性能,更少的bug?
據(jù)WebAssembly的開(kāi)發(fā)團(tuán)隊(duì)描述,使用WebAssembly意味著更少的原代碼。與asm.js相比,它減少了大約25%的代碼量。雖然這僅僅是一個(gè)原型。
感謝各位的閱讀!關(guān)于“JavaScript中WebAssembly是什么”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。