一、百度智能程序整體框架及演進
整個移動互聯網一直是在 NA 和 H5 之間尋找權衡,NA 的性能好、能力強;H5 靈活性更高。我認為渲染分為兩派,一派就是 NA 渲染派,一派叫做 H5 渲染派。
NA 渲染派,比較有代表性的如 RN 、 Flutter ;Web 渲染派,比如百度的輕應用,以及之后做的小程序。
1. 開發全流程概覽
百度曾經做過的 Web 渲染派的三個代表產品,分別是輕應用、直達號和小程序。
輕應用,是 H5 + 端能力。它是一個標準的 H5,增加了一些 NA 的 API,比如定位等。
直達號,在技術層面跟輕應用是一樣的。
小程序,本質上是一個受限的 H5 + 大量豐富的 API + UI 組件。現在我們給小程序提供的 API 有 300 多個,組件有 30 多個,組件是有界面的。比如,視頻、地圖 。
為什么小程序要受限,主要有兩個原因:
保持體驗的一致性。H5 太過靈活,JS 隨時可以去改變界面。
安全考慮。因為我們提供了大量 API 和組件,且這些都是很底層的一些能力,比如電話號碼、賬號,肯定不能輕易開放給大家。
怎么受限,主要有兩點:
編寫語言,不再是直接寫 HTML ,而是用自定義語言 swan 來編寫 。
runtime 層有兩個棧,一個是渲染棧,一個是網站監控JS 執行棧,這兩個棧從物理上隔離,以保障安全性。
2. 智能小程序框架
(1)開發運行全流程
先簡單介紹一下整個百度智能小程序的開發流程。
首先開發者用 swan 寫布局;
接著通過開發者工具打包,上傳到我們的小程序 B 端服務器;
然后是小程序的審核流程,有機審、人審;
最后是用戶點擊小程序時,客戶端請求小程序 C 端服務器,C 端服務器再從 B 端服務器獲取小程序包。整個過程都是加密傳輸,可以保證代碼的安全。
(2)百度智能小程序框架 -SWAN
分層結構如下:
最上層是開發者基礎庫,命名為 swan-js ,開發者直接和這層打交道。swan-js 負責兩件事情:即 swan 代碼轉為 HTML,變成 WebView 可運行程序;客戶端端能力的封裝暴露。
再下一層是 swan-native。這里面最核心的是API 和組件的 NA 實現。其中雙棧管理也在這一層,另外標紅的 Extension 用于開發者宿主自身能力擴展使用,比如,貼吧宿主期望增加個發帖能力,就可以通過此機制。
再下面這層叫 Porting Layer。這層是百度小程序為了實現開源,增加的一層與宿主的接口層。最下面這一層是宿主基礎能力層。如果宿主沒有這些能力,可以參考百度開源的參考實現,可直接集成到宿主使用。