WebAssembly標準入門

WebAssembly標準入門

《WebAssembly標準入門》是2018年11月人民郵電出版社出版的圖書,作者是柴樹杉、丁爾男。

基本介紹

  • 中文名:WebAssembly標準入門
  • 作者:柴樹杉、丁爾男
  • 出版時間:2018年11月30日
  • 出版社人民郵電出版社
  • 頁數:200 頁
  • ISBN:9787115500595
  • 定價:49 元
內容簡介,序言,目錄,

內容簡介

作為一種新穎的網頁前端技術,WebAssembly的發展日新月異。本書基於已受瀏覽器普遍支持的WebAssembly極小可用特徵集,致力於通過簡單易懂的方式,從使用方法到虛擬機設計,講解WebAssembly的運行原理。極小可用特徵集只是快速疊代的起點,SIMD、多執行緒等更多特性將逐漸被添加到WebAssembly標準中。
在WebAssembly 大潮來臨之際,希望本書能為該技術在國內的推廣貢獻綿薄之力。
本書內容要點:
  • WebAssembly 簡要介紹;
  • 在JavaScript 中使用WebAssembly 模組的方法;
  • WebAssembly 彙編語言及二進制格式;
  • 使用高級語言開發WebAssembly 模組;
  • WebAssembly 指令參考。

序言

某一天,有朋友向我推薦了一項新技術——WebAssembly。我認為這是一項值得關注的技術。
說WebAssembly是一門程式語言,但它更像一個編譯器。實際上它是一個虛擬機,包含了一門低級彙編語言和對應的虛擬機體系結構,而WebAssembly這個名字從字面理解就說明了一切——Web的彙編語言。它的優點是檔案小、載入快、執行效率非常高,可以實現更複雜的邏輯。
其實,我覺得出現這樣的技術並不令人意外,而只是順應了潮流,App的封閉系統必然會被新一代Web OS取代。但現有的Web開發技術,如JavaScript,前端執行效率和解決各種複雜問題的能力還不足,而WebAssembly的編譯執行功能恰恰能彌補這些不足。WebAssembly標準是在謀智(Mozilla)、谷歌(Google)、微軟(Microsoft)、蘋果(Apple)等各大廠商的大力推進下誕生的,目前包括Chrome、Firefox、Safari、Opera、Edge在內的大部分主流瀏覽器均已支持WebAssembly。這使得WebAssembly前景非常好。
WebAssembly是Web前端技術,具有很強的可移植性,技術的潛在受益者不局限於傳統的前端開發人員,隨著技術的推進,越來越多的其他語言的開發者也將從中受益。如果開發者願意,他們可以使用C/C++、Go、Rust、Kotlin、C#等開發語言來寫代碼,然後編譯為WebAssembly,並在Web上執行,這是不是很酷?它能讓我們很容易將用其他程式語言編寫的程式移植到Web上,對於企業級套用和工業級套用都是巨大利好。
WebAssembly的套用場景也相當豐富,如Google Earth,2017年10月Google Earth開始在Firefox上運行,其中的關鍵就是使用了WebAssembly;再如網頁遊戲,WebAssembly能讓HTML5遊戲引擎速度大幅提高,國內一家公司使用WebAssembly後引擎效率提高了300%。
WebAssembly作為一種新興的技術,為開發者提供了一種嶄新的思路和工作方式,未來是很有可能大放光彩的,不過目前其相關的資料和社區還不夠豐富,儘管已經有一些社區開始出現了相關技術文章,CSDN上也有較多的文章,但像本書這樣全面系統地介紹WebAssembly技術的還不多,甚至沒有。本書的兩位作者都是有10多年經驗的一線開發者,他們從WebAssembly概念誕生之初就開始密切關注該技術的發展,其中柴樹杉是Emscripten(WebAssembly的技術前身之一)的首批實踐者,丁爾男是國內首批工程化使用WebAssembly的開發者。
2018年7月,WebAssembly社區工作組發布了WebAssembly 1.0標準。現在,我在第一時間就向國內開發者介紹和推薦本書,是希望開發者能迅速地了解和學習新技術,探索新技術的價值。
——蔣濤 CSDN創始人、總裁,極客幫創始合伙人

目錄

  • 第0章 WebAssembly誕生背景 1
  • 0.1 JavaScript簡史 1
  • 0.2 asm.js的嘗試 2
  • 0.3 WebAssembly的救贖 5
第1章 JavaScript語言基礎 7
  • 1.1 console對象 7
  • 1.2 函式和閉包 9
  • 1.3 Promise對象 12
  • 1.4 二進制數組 13
第2章 WebAssembly快速入門 17
  • 2.1 準備工作 17
  • 2.2 首個例程 21
  • 2.3 WebAssembly概覽 22
  • 2.4 你好,WebAssembly 25
  • 2.5 WebAssembly調試及代碼編輯環境 28
第3章 JavaScript中的WebAssembly對象 31
  • 3.1 WebAssembly對象簡介 31
  • 3.2 全局方法 32
  • 3.3 WebAssembly.Module對象 36
  • 3.4 WebAssembly.Instance對象 41
  • 3.5 WebAssembly.Memory對象 44
  • 3.6 WebAssembly.Table對象 50
  • 3.7 小結及錯誤類型 61
第4章 WebAssembly彙編語言 65
  • 4.1 S-表達式 65
  • 4.2 數據類型 66
  • 4.3 函式定義 67
  • 4.4 變數 69
  • 4.5 棧式虛擬機 72
  • 4.6 函式調用 75
  • 4.7 記憶體讀寫 79
  • 4.8 控制流 83
  • 4.9 導入和導出 91
  • 4.10 start()函式及指令摺疊 96
第5章 WebAssembly二進制格式 99
  • 5.1 LEB128編碼 99
  • 5.2 頭部和段數據 101
  • 5.3 記憶體段和數據段 104
  • 5.4 表格段和元素段 106
  • 5.5 開始段和函式索引 108
  • 5.6 全局段 111
  • 5.7 函式段、代碼段和類型段 113
  • 5.8 導入段和導出段 118
  • 5.9 自定義段 121
  • 5.10 補充說明 126
第6章 Emscripten和WebAssembly 127
  • 6.1 安裝環境 127
  • 6.2 你好,Emscripten! 129
  • 6.3 C/C++內聯JavaScript代碼 133
  • 6.4 C/C++調用JavaScript函式 139
  • 6.5 JavaScript調用C導出函式 149
  • 6.6 運行時和訊息循環 155
  • 6.7 補充說明 162
第7章 Go語言和WebAssembly 163
  • 7.1 你好,Go語言 163
  • 7.2 瀏覽器中的Go語言 166
  • 7.3 使用JavaScript函式 168
  • 7.4 回調Go函式 170
  • 7.5 syscall/js包 172
  • 7.6 WebAssembly模組的導入函式 175
  • 7.7 WebAssembly虛擬機 178
  • 7.8 補充說明 180
附錄 指令參考 181

相關詞條

熱門詞條

聯絡我們