網(wǎng)站首頁 編程語言 正文
文字描述可能有點(diǎn)長。 感興趣的童鞋 請耐心看下 都是經(jīng)驗(yàn)總結(jié)哈
由于公司要在小程序上面加上一個(gè)聊天的功能 ,選來選去 最后選擇了 騰訊的im
由于需要用到的一些功能可能比較新吧。所以優(yōu)選選擇了 最新的sdk
當(dāng)時(shí)代碼體積是 1.7M,但是沒想到 就這個(gè)sdk 就有三四百kb 別說再加上聊天的業(yè)務(wù)代碼了。
然后就開始了 長久的優(yōu)化縮小 代碼體積包的經(jīng)歷
下面就是 意義羅列出來 當(dāng)時(shí)那些減少了體積,最后 保證了不影響現(xiàn)有業(yè)務(wù)的情況下 把小程序上了。當(dāng)然空間也只剩下 50kb左右的空間 就溢出。很危險(xiǎn) 。
這里注意點(diǎn): 如果你的本地代碼是 1.82M 但是上傳的時(shí)候經(jīng)過代碼的壓縮和樣式體積的壓縮,你的代碼可能還是會超過2M 不要奇怪哈
給個(gè)建議最好還是不要貼著邊飛行
優(yōu)化手段
1.非必要不要吧圖片的東西放到項(xiàng)目里面,除非是一些很小的圖標(biāo),我的項(xiàng)目中圖片的總共才二三十 kb 吧, 放靜態(tài)服務(wù)器中
2.刪除一些非要的字體圖標(biāo)庫,因?yàn)楣居袑iT的字體庫,然后前面的人就把所有的圖標(biāo)下載下來,但用到的僅僅不到三分之一。光這個(gè)就減少幾十kb
3. 刪除一些無關(guān)的樣式代碼,清除無關(guān)的代碼,這個(gè)對于長年日積月累的代碼來說 還是有很多廢代碼,我整體過了一遍減少了幾十kb
4. 主包很大的情況,可以考慮分包處理
5. 如果分包之后,主包還是很大的話,不要把分包分的太多了,因?yàn)榉职兄灰袃蓚€(gè)分包引用了同一個(gè)插件 就會打包到主包中
6.把那些主包和很多分包中都用到的插件進(jìn)行單獨(dú)拆分出來
mini: {
webpackChain (chain, webpack) {
...
chain.merge({
optimization: {
splitChunks: {
cacheGroups: {
moment: {
name: 'moment',
priority: 1000,
test (module) {
return /node_modules[\\/]moment/.test(module.context)
}
}
}
}
}
})
},
commonChunks: ['runtime', 'vendors', 'taro', 'common', 'moment'],
},
7.再其次就是更新一些插件,比如moment這個(gè)時(shí)間插件 我們就可以更新成dayjs進(jìn)行替換,因?yàn)閐ayjs體積小了很多
8.上傳的時(shí)候勾選樣式自動補(bǔ)全,這個(gè)好像沒啥用但是給點(diǎn)心理安慰吧哈哈
總結(jié): 代碼體積過大,本身上 很多時(shí)候就是因?yàn)槲覀兪褂玫牟寮赡苡悬c(diǎn)多,注意不要過多的使用插件哈 ,因?yàn)榇a本身不是很大的
以上就是這個(gè)過程中經(jīng)驗(yàn)總結(jié) 關(guān)注我 持續(xù)更新前端知識。
原文鏈接:https://yunchong.blog.csdn.net/article/details/122584730
相關(guān)推薦
- 2023-04-18 C生萬物C語言宏將整數(shù)二進(jìn)制位的奇偶數(shù)位交換_C 語言
- 2022-11-21 Android自定義ListView實(shí)現(xiàn)下拉刷新上拉加載更多_Android
- 2022-09-09 python定義函數(shù)如何判斷年份是否為閏年_python
- 2022-12-11 Git的代碼合入流程詳解_相關(guān)技巧
- 2022-11-15 Python中class內(nèi)置方法__init__與__new__作用與區(qū)別解析_python
- 2022-06-09 ASP.NET?Core中的環(huán)境配置_基礎(chǔ)應(yīng)用
- 2022-03-24 Android圖表庫HelloCharts的實(shí)例詳解_Android
- 2023-01-14 Go編程庫Sync.Pool用法示例詳解_Golang
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支