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