­

小程式就是瀏覽器?

  • 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和渲染頁面,所以可以刪減很多不必要的東西,可以視為一個閹割版的低配瀏覽器。