最近在看WebKit技術內幕這本書,寫博客的目的還是對所學的知識點做個總結吧,希望自己能堅持下去,Ok, Let’s go
遊覽器特性
- 網絡: 遊覽器通過網絡模塊來下載各種各樣的資源,包括HTML文本,JaveScript代碼,樣式表,圖片,音視頻文件等
- 資源管理: 從網絡模塊下載資源,並對資源進行管理,包括避免重複下載資源,緩存資源等
- 網頁遊覽: 通過網絡下載資源並從資源管理器獲取資源轉換爲可視話的結果
- 多頁面管理: 遊覽器支持多頁面遊覽,需要支持多個頁面同時加載,這需要解決多個頁面的相互影響和安全等問題
- 插件和擴展: 插件用於顯示網頁特定內容,擴展增加遊覽器新功能的軟件或壓縮包,目前常用插件有NPAPI,PPAPI,ActiveX(一直不推薦採用,漏洞比較多)等,擴展跟遊覽器有關
- 賬戶和同步: 將遊覽器相關信息包括歷史記錄,書籤等同步到服務器
- 安全機制: 提供一個安全的遊覽器環境,避免用戶信息被各種非法竊取和破壞
- 開發者工具: 面向網頁開發者
HTML
超文本標記語言,HTML5於2012年由WHATWG&W3C推薦爲候選規範,H5包含10大類別:離線,存儲,連接,文件訪問,語義,音視頻,3D和圖形,展示,性能和其他,具體見下表
類別 | 具體規範 |
---|---|
離線 | Application cache,Local storage,Indexed DB,在線/離線事件 |
存儲 | Application cache,Local storage,Indexed DB etc |
連接 | Web Sockets, Server-sent事件 |
文件訪問 | File API,File System,FileWriter,ProcessEvents |
語義 | 新元素,包括Media,structural,國際化,Link relation,屬性,form類型,microdata等方面 |
音視頻 | HTML5 Video,Web Audio,WebRTC,Video track等 |
3D和圖形 | Canvas2D,3D CSS變換,WebGL,SVG等 |
展示 | CSS3 2D/3D變換,轉換(transition),WebFonts等 |
性能 | Web Worker,HTTP caching等 |
其他 | 觸控和鼠標, Shadow DOM,CSS masking等 |
內核和主流內核
內核是指將頁面轉變爲可視化的圖像結果,如下圖,也被稱爲渲染引擎。
遊覽器和web平臺及其渲染引擎
備註 | Trident(IE) | Gecko(火狐) | Webkit(chrome) |
---|---|---|---|
基於渲染引擎的遊覽器或者web平臺 | IE | Firefox | Safari,chromium/Chrome,Android遊覽器,ChromeOS,WebOS等 |
渲染引擎模塊及其依賴的模塊
- HTML解釋器: 將HTML文本解釋成DOM樹,DOM一種文檔的表示方法
- CSS解釋器:級聯樣式表的解釋器,爲DOM中各個元素對象計算樣式信息
- 佈局:DOM創建後,將元素對象同樣式結合起來,計算大小位置等佈局信息,最終形成一個內部表示模型
- JavaScript引擎:解釋JavaScript代碼並通過DOM接口和CSSOM接口來修改網頁內容和樣式信息,最終改變渲染結果
渲染過程及依賴的模塊
Webkit介紹
廣義webkit是指Webkit項目,狹義是指在WebCore(包含之前提到的HTML解釋器,CSS解釋器和佈局等模塊)和JavaScript引擎之上的一層綁定和嵌入式編程接口,可以被各種遊覽器調用。
webkit2與webkit的區別:webkit2不是webkit綁定和接口層的簡單修改版,而是一組支持新架構的全新綁定和接口層,蘋果公司於2010年4月正式宣佈webkit2,該接口和調用者代碼不在同一個進程,有了chromium多進程的優點,與此同時,webkit2的使用者不需要理解和接觸背後的多進程和進程間通信等複雜機制,結構如下圖: