Skip to content

基礎庫介紹

基礎庫介紹

基礎庫是負責小程序加載的中間層,在小程序基礎庫中有很多對於App與手機的能力(如藍牙,NFC等)的預封裝,開發者囙此可以通過標準組件和標準API接口調用相關的能力來進行小程序開發。

基礎庫可以類比成常見的web開發中的React、Lodash等庫; 但他更特殊一點,因為小程序的能力需要SDK來支撐,囙此:

  • 基礎庫和宿主App一樣也有屬於自己的版本號;
  • 每一版基礎庫新增的能力都需要運行在特定版本之中;
  • 高版本基礎庫的某些能力無法相容低版本SDK。
常見的,基礎庫提供了組件和API兩大部分讓小程序開發者進行相關的能力的使用。
  • 小程序中的wxml文件通過編譯,能够在基礎庫提供的環境中,渲染出真實DOM節點;

  • 小程序中的JS文件裏用到的Page、Component等接口也是由基礎庫暴露到全域的;

  • 小程序中用到的wx.xxxAPI其實是調用了原生的能力(藍牙、wifi等)而基礎庫就是小程序和原生容器之間的'橋樑'。

    簡而言之,基礎庫主要用來處理數據綁定、提供組件系統、事件系統、通信系統等一系列框架邏輯。 從雙行程模型來看,既包含渲染層的Virtual DOM的渲染問題,還包括邏輯層內寘組件和API等。 除此之外,基礎庫還提供了一些小程序的補充能力,比如自定義組件、效能相容等。

js
const { SDKVersion } = wx.getSystemInfoSync(); // fetch jsLib version

基礎庫機制

在開發網頁時,我們經常會引用到協力廠商JavaScript庫,而在使用這些庫中提供的API前,我們需要提前在業務代碼中引入這些協力廠商庫。同理,在App中打開小程序時候,我們也需要在啟動小程序前載入基礎庫,然後再載入業務代碼。 由於小程序的渲染層和邏輯層是兩個線程管理,當我們一般說起基礎庫時,通常包括WebView基礎庫(渲染層),和AppService基礎庫(邏輯層)。

在打開所有基於Luffa Cloud實現的小程序前,都需要注入相同的基礎庫,囙此我們不需要將基礎庫打包在小程序的代碼包之中,而是需要通過在App中集成Luffa Cloud小程序SDK,並通過SDK來引入小程序基礎庫。 通過SDK引入基礎庫還有2個好處:

可以降低小程序代碼包的大小;

可以單獨針對基礎庫新增能力,或修復Bug,不需要修改小程序的代碼。

小程序啟動

在我們打開小程序時,會看到包括小程序圖標,名稱的加載頁面。 在這個頁面中,首先會完成小程序基礎庫與代碼包的下載工作,完成基礎庫與代碼包下載後,則會分別開始對JSCode與WebView進行初始化,在完成基礎庫,小程序代碼包和WebView注入後,則會開始對小程序的相關代碼進行初始化,最終用戶就可以看到完整的小程序代碼了。