小程式就是瀏覽器?
- 2019 年 11 月 28 日
- 筆記
之前公司技術總監說小程式就是個瀏覽器,有其它同事也有說過小程式類似瀏覽器這種觀點。通過這篇文章來探討一下這種說法。
# 一般瀏覽器的結構
先看一張圖:

- 用戶介面(User Interface)
- 工具欄、地址欄、前進/後退按鈕、書籤菜單、可視化頁面載入進度、智慧下載處理、首選項、列印
- 瀏覽器引擎(Browser Engine)
- 為渲染引擎提供高級介面
- 載入URI,支援前進/後退/重新載入
- 提供當前頁面載入進度、JavaScript alert掛鉤
- 允許查詢/修改渲染引擎設置
- 渲染引擎(Rendering Engine)
- 生成URI可視化表示
- 解析、顯示HTML和XML文檔
- 計算頁面布局
- 網路(Networking)
- 實現HTTP和FTP等文件傳輸協議
- 在不同的字符集之間進行轉換 -解析MIME媒體類型
- JavaScript解釋器(JavaScript Interpreter)
- 解釋並執行js
- XML解析器(XML Parser)
- 將XML文檔解析成文檔對象模型
- 顯示後端(Display Backend)
- 提供繪圖和窗口原語(用戶介面控制項集合、字體集合)
- 數據持久層(Data Persistence)
- 將與瀏覽會話相關聯的各種數據存儲在硬碟上
# 小程式架構
宿主環境(運行環境)

三端的腳本執行環境以及用於渲染非原生組件的環境
|
iOS |
Android |
開發者工具 |
---|---|---|---|
邏輯層 |
JavaScriptCore |
X5 JSCore |
V8 |
視圖層 |
WKWebView |
X5基於Mobile Chrome 57 |
XWeb基於Mobile Chrome 67 |
從二者結構上來看,瀏覽器本身承載了很多功能,所以架構自然比小程式更加複雜。 小程式主要為了執行JS和渲染頁面,所以可以刪減很多不必要的東西,可以視為一個閹割版的低配瀏覽器。