欧美日韩精品一区二区在线线,一级无码在线收看,精品国产高清91,久久精品欧美电影

# 代碼注入優(yōu)化

小程序代碼注入的優(yōu)化可以從優(yōu)化代碼量優(yōu)化執(zhí)行耗時兩個角度著手。

# 1. 使用按需注入

推薦所有小程序使用

通常情況下,在小程序啟動時,啟動頁面依賴的所有代碼包(主包、分包、插件包、擴(kuò)展庫等)的所有 JS 代碼會全部合并注入,包括其他未訪問的頁面以及未用到自定義組件,同時所有頁面和自定義組件的 JS 代碼會被立刻執(zhí)行。這造成很多沒有使用的代碼在小程序運(yùn)行環(huán)境中注入執(zhí)行,影響注入耗時和內(nèi)存占用。

自基礎(chǔ)庫版本 2.11.1 起,可以通過開啟「按需注入」特性避免不必要的代碼注入和執(zhí)行,以降低小程序的啟動時間和運(yùn)行時內(nèi)存。

{
  "lazyCodeLoading": "requiredComponents"
}

注意:啟用按需注入后,頁面 JSON 配置中定義的所有組件和 app.jsonusingComponents 配置的全局自定義組件,都會被視為頁面的依賴并進(jìn)行注入和加載。建議開發(fā)者及時移除 JSON 中未使用自定義組件的聲明,并盡量避免在全局聲明使用率低的自定義組件,否則可能會影響按需注入的效果。

# 2. 使用用時注入

在打開上述「按需注入」特性的前提下,可以通過「用時注入」特性使一部分自定義組件不在啟動時注入,而是在真正被渲染時才進(jìn)行注入,進(jìn)一步降低小程序的啟動和首屏?xí)r間。

# 3. 啟動過程中減少同步 API 的調(diào)用

在小程序啟動流程中,會注入開發(fā)者代碼并順序同步執(zhí)行 App.onLaunch, App.onShow, Page.onLoad, Page.onShow。

在小程序初始化代碼(Page,App 定義之外的內(nèi)容)和上述啟動相關(guān)的幾個生命周期中,應(yīng)盡量減少或不調(diào)用同步 API。絕大多數(shù)同步 API 會以 Sync 結(jié)尾,但有部分特例,比如 getSystemInfo。

同步 API 雖然使用起來更簡單,但是會阻塞當(dāng)前 JS 線程,影響代碼執(zhí)行。如非必要,應(yīng)盡可能的使用異步 API 代替同步,并將啟動過程中非必要的同步 API 調(diào)用延遲到啟動完成后進(jìn)行。

常見的開發(fā)者容易在啟動時過于頻繁調(diào)用的 API 有:

# 3.1 getSystemInfo/getSystemInfoSync

由于歷史原因,這兩個接口都是同步實現(xiàn)。由于 getSystemInfo 接口里承載了過多內(nèi)容,單次調(diào)用可能比較久。

如非必要,建議開發(fā)者對調(diào)用結(jié)果進(jìn)行緩存,避免重復(fù)調(diào)用。啟動過程中應(yīng)盡可能最多調(diào)用一次

建議優(yōu)先使用拆分后的 getSystemSetting/getAppAuthorizeSetting/getDeviceInfo/getWindowInfo/getAppBaseInfo 按需獲取信息,或使用使用異步版本 getSystemInfoAsync

# 3.2 getStorageSync/setStorageSync

getStorageSync/setStorageSync 應(yīng)只用來進(jìn)行數(shù)據(jù)的持久化存儲,不應(yīng)用于運(yùn)行時的數(shù)據(jù)傳遞或全局狀態(tài)管理。啟動過程中過多的讀寫存儲,也會顯著影響小程序代碼注入的耗時。

對于簡單的數(shù)據(jù)共享,可以使用在 App 上增加全局?jǐn)?shù)據(jù)對象完成:

// app.js
App({
  globalData: { // 全局共享的數(shù)據(jù)
    userName: 'Wechat'
  }
})

// pages/index.js
const app = getApp()
Page({
  onLoad() {
    const { userName } = app.globalData
  }
})

# 4. 避免啟動過程進(jìn)行復(fù)雜運(yùn)算

在小程序初始化代碼(Page,App 定義之外的內(nèi)容)和啟動相關(guān)的幾個生命周期中,應(yīng)避免執(zhí)行復(fù)雜的運(yùn)算邏輯。復(fù)雜運(yùn)算也會阻塞當(dāng)前 JS 線程,影響啟動耗時。建議將復(fù)雜的運(yùn)算延遲到啟動完成后進(jìn)行。