2.5 自定義組件
從小程序基礎(chǔ)庫版本 1.6.3 開始淡溯,小程序支持簡潔的組件化編程。所有自定義組件相關(guān)特性都需要基礎(chǔ)庫版本 1.6.3或更高玄坦。
開發(fā)者可以將頁面內(nèi)的功能模塊抽象成自定義組件血筑,以便在不同的頁面中重復(fù)使用绘沉;也可以將復(fù)雜的頁面拆分成多個低耦合的模塊煎楣,有助于代碼維護(hù)。自定義組件在使用時與基礎(chǔ)組件非常相似车伞。
2.6 插件
插件的開發(fā)和使用自小程序基礎(chǔ)庫版本 1.9.6 開始支持择懂。
插件是對一組 js 接口或自定義組件的封裝,用于提供給第三方小程序調(diào)用另玖。插件必須嵌入在其他小程序中才能被用戶使用困曙。
插件開發(fā)者可以像開發(fā)小程序一樣編寫一個插件并上傳代碼表伦,在插件發(fā)布之后,其他小程序方可調(diào)用慷丽。小程序平臺會托管插件代碼蹦哼,其他小程序調(diào)用時,上傳的插件代碼會隨小程序一起下載運(yùn)行要糊。
相對于普通 js 文件或自定義組件纲熏,插件擁有更強(qiáng)的獨(dú)立性,擁有獨(dú)立的 API 接口锄俄、域名列表等局劲,但同時會受到一些限制,如一些 API 無法調(diào)用或功能受限奶赠。
對于插件開發(fā)者鱼填,請閱讀開發(fā)插件章節(jié);對于插件使用者毅戈,請閱讀使用插件章節(jié)苹丸。
2.7 分包加載
某些情況下,開發(fā)者需要將小程序劃分成不同的子包苇经,在構(gòu)建時打包成不同的分包谈跛,用戶在使用時按需進(jìn)行加載。
在構(gòu)建小程序分包項(xiàng)目時塑陵,構(gòu)建會輸出一個或多個功能的分包感憾,其中每個分包小程序必定含有一個主包,所謂的主包令花,即放置默認(rèn)啟動頁面/TabBar 頁面阻桅,以及一些所有分包都需用到公共資源/JS 腳本,而分包則是根據(jù)開發(fā)者的配置進(jìn)行劃分兼都。
在小程序啟動時嫂沉,默認(rèn)會下載主包并啟動主包內(nèi)頁面,如果用戶需要打開分包內(nèi)某個頁面扮碧,客戶端會把對應(yīng)分包下載下來趟章,下載完成后再進(jìn)行展示。
目前小程序分包大小有以下限制:
整個小程序所有分包大小不超過 4M
單個分包/主包大小不能超過 2M
對小程序進(jìn)行分包慎王,可以優(yōu)化小程序首次啟動的下載時間蚓土,以及在多團(tuán)隊(duì)共同開發(fā)時可以更好的解耦協(xié)作。
2.8 多線程Worker
一些異步處理的任務(wù)赖淤,可以放置于 Worker 中運(yùn)行蜀漆,待運(yùn)行結(jié)束后,再把結(jié)果返回到小程序主線程咱旱。Worker 運(yùn)行于一個單獨(dú)的全局上下文與線程中确丢,不能直接調(diào)用主線程的方法绷耍。 Worker 與主線程之間的數(shù)據(jù)傳輸,雙方使用 Worker.postMessage() 來發(fā)送數(shù)據(jù)鲜侥,Worker.onMessage() 來接收數(shù)據(jù)褂始,傳輸?shù)臄?shù)據(jù)并不是直接共享,而是被復(fù)制的描函。
2.9 基礎(chǔ)庫
小程序的能力需要微信客戶端來支撐病袄,每一個基礎(chǔ)庫都只能在對應(yīng)的客戶端版本上運(yùn)行,高版本的基礎(chǔ)庫無法兼容低版本的微信客戶端赘阀。
為了避免新版本的基礎(chǔ)庫給線上小程序帶來未知的影響益缠,微信客戶端都是攜帶 上一個穩(wěn)定版 的基礎(chǔ)庫發(fā)布的。
在新版本客戶端發(fā)布后基公,再通過后臺灰度新版本基礎(chǔ)庫幅慌,灰度時長一般為 12 小時,在灰度結(jié)束后轰豆,用戶設(shè)備上才會有新版本的基礎(chǔ)庫胰伍。
2.10 兼容
小程序的功能不斷的增加,但是舊版本的微信客戶端并不支持新功能酸休,所以在使用這些新能力的時候需要做兼容骂租。
文檔會在組件,API等頁面描述中帶上各個功能所支持的版本號斑司。
可以通過 wx.getSystemInfo 或者 wx.getSystemInfoSync 獲取到小程序的基礎(chǔ)庫版本號渗饮。
也可以通過 wx.canIUse 詳情 來判斷是否可以在該基礎(chǔ)庫版本下直接使用對應(yīng)的API或者組件
2.11 運(yùn)行機(jī)制
小程序啟動會有兩種情況,一種是「冷啟動」宿刮,一種是「熱啟動」互站。 假如用戶已經(jīng)打開過某小程序,然后在一定時間內(nèi)再次打開該小程序僵缺,此時無需重新啟動胡桃,只需將后臺態(tài)的小程序切換到前臺,這個過程就是熱啟動磕潮;冷啟動指的是用戶首次打開或小程序被微信主動銷毀后再次打開的情況翠胰,此時小程序需要重新加載啟動。
1自脯、更新機(jī)制
小程序冷啟動時如果發(fā)現(xiàn)有新版本之景,將會異步下載新版本的代碼包,并同時用客戶端本地的包進(jìn)行啟動冤今,即新版本的小程序需要等下一次冷啟動才會應(yīng)用上闺兢。 如果需要馬上應(yīng)用最新版本茂缚,可以使用 wx.getUpdateManager API 進(jìn)行處理戏罢。
2屋谭、運(yùn)行機(jī)制
小程序沒有重啟的概念
當(dāng)小程序進(jìn)入后臺,客戶端會維持一段時間的運(yùn)行狀態(tài)龟糕,超過一定時間后(目前是5分鐘)會被微信主動銷毀
當(dāng)短時間內(nèi)(5s)連續(xù)兩次以上收到系統(tǒng)內(nèi)存告警桐磁,會進(jìn)行小程序的銷毀
3、再次打開邏輯
2.12 性能
2.12.1 分析工具
1讲岁、性能Trace 工具
2我擂、性能面板
2.12.2 優(yōu)化建議
1、setData
2缓艳、圖片資源
圖片對內(nèi)存的影響
圖片對頁面切換的影響
3校摩、代碼包大小的優(yōu)化
控制代碼包內(nèi)圖片資源
及時清理沒有使用到的代碼和資源
參考資料:https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/