小程序包大小超過2M的解決方法
微信限制了小程序的代碼包不能超過2MB,這主要是出于對(duì)小程序啟動(dòng)速度的考慮。但是,2MB 的大小也限制了小程序功能的擴(kuò)展,如果大小超出了2MB該如何解決呢?
1. 優(yōu)化代碼,刪除掉不用的代碼
2. 圖片壓縮或者上傳服務(wù)器
一般圖片所占用的空間比較大,盡量不要放在小程序本地文件夾中,如果圖片不多的話可以對(duì)圖片進(jìn)行壓縮,圖片壓縮平臺(tái):https://tinyjpg.com/
另外, 通過cli命令創(chuàng)建的uni app項(xiàng)目,可將圖片或字體圖標(biāo)放入assets文件夾下,通過require引入, 也可減少主包大。
3. 分包加載:
什么是分包加載:
小程序一般都是由某幾個(gè)功能組成,通常這幾個(gè)功能之間是獨(dú)立的,但會(huì)依賴一些公共的邏輯,且這些功能一般會(huì)對(duì)應(yīng)某幾個(gè)獨(dú)立的頁(yè)面。那么小程序代碼的打包,可以按照功能的劃分,拆分成幾個(gè)分包,當(dāng)需要用到某個(gè)功能時(shí),才加載這個(gè)功能對(duì)應(yīng)的分包。
對(duì)于用戶來說,小程序加載流程變成了:
1.首次啟動(dòng)時(shí),先下載小程序主包,顯示主包內(nèi)的頁(yè)面;
2.當(dāng)進(jìn)入某個(gè)分包的頁(yè)面,再下載這個(gè)對(duì)應(yīng)分包,下載完畢后,顯示分包的頁(yè)面。
采用分包加載,對(duì)開發(fā)者而言,能使小程序有更大的代碼體積,承載更多的功能與服務(wù);而對(duì)用戶而言,可以更快地打開小程序,同時(shí)在不影響啟動(dòng)速度前提下使用更多功能。
分包的劃分:
在配置前,按照功能對(duì)各個(gè)分包的內(nèi)容進(jìn)行劃分,將同一個(gè)功能下的頁(yè)面和邏輯放在童改一個(gè)目錄下,把一些跨功能的公共邏輯放在主包下。
在分包劃分時(shí)需注意:
1.包與包之間功能盡可能獨(dú)立,避免分包與分包之間引用上的耦合。因?yàn)榉职募虞d是由用戶操作觸發(fā)的,并不能確保某分包加載時(shí),另外一個(gè)分包就一定存在,這個(gè)時(shí)候可能會(huì)導(dǎo)致 JS 邏輯異常的情況,例如報(bào)「”xxx.js” is not defined」這樣的錯(cuò)誤;
2.一些公共的自定義組件,要放在主包內(nèi)。
分包的配置:
在uni app中通過cli初始化的小程序目錄結(jié)構(gòu)如下:
├── src
├── main.js
├── App.vue
├── pages.json
├── manifest.json
├── orderPackages
│ └── pages
│ ├── goodsDetail
│ └── myorder
├── pages
│ ├── index
│ └── user
└── utils
需在pages.json中配置subPackages字段,在subPackage里面聲明項(xiàng)目的分包結(jié)構(gòu):
目前小程序分包大小的限制:
整個(gè)小程序所有分包大小不超過 4M
單個(gè)分包/主包大小不能超過 2M
以上只羅列了uni app框架分包加載的步驟, 原生小程序分包方法根據(jù)官方文檔即可快速實(shí)現(xiàn),小程序框架雖多, 大都大同小異,如果后續(xù)有使用其他框架進(jìn)行開發(fā),會(huì)進(jìn)行補(bǔ)充。