網(wǎng)站首頁 編程語言 正文
文字描述可能有點長。 感興趣的童鞋 請耐心看下 都是經(jīng)驗總結(jié)哈
由于公司要在小程序上面加上一個聊天的功能 ,選來選去 最后選擇了 騰訊的im
由于需要用到的一些功能可能比較新吧。所以優(yōu)選選擇了 最新的sdk
當(dāng)時代碼體積是 1.7M,但是沒想到 就這個sdk 就有三四百kb 別說再加上聊天的業(yè)務(wù)代碼了。
然后就開始了 長久的優(yōu)化縮小 代碼體積包的經(jīng)歷
下面就是 意義羅列出來 當(dāng)時那些減少了體積,最后 保證了不影響現(xiàn)有業(yè)務(wù)的情況下 把小程序上了。當(dāng)然空間也只剩下 50kb左右的空間 就溢出。很危險 。
這里注意點: 如果你的本地代碼是 1.82M 但是上傳的時候經(jīng)過代碼的壓縮和樣式體積的壓縮,你的代碼可能還是會超過2M 不要奇怪哈
給個建議最好還是不要貼著邊飛行
優(yōu)化手段
1.非必要不要吧圖片的東西放到項目里面,除非是一些很小的圖標(biāo),我的項目中圖片的總共才二三十 kb 吧, 放靜態(tài)服務(wù)器中
2.刪除一些非要的字體圖標(biāo)庫,因為公司有專門的字體庫,然后前面的人就把所有的圖標(biāo)下載下來,但用到的僅僅不到三分之一。光這個就減少幾十kb
3. 刪除一些無關(guān)的樣式代碼,清除無關(guān)的代碼,這個對于長年日積月累的代碼來說 還是有很多廢代碼,我整體過了一遍減少了幾十kb
4. 主包很大的情況,可以考慮分包處理
5. 如果分包之后,主包還是很大的話,不要把分包分的太多了,因為分包中只要有兩個分包引用了同一個插件 就會打包到主包中
6.把那些主包和很多分包中都用到的插件進(jìn)行單獨拆分出來
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這個時間插件 我們就可以更新成dayjs進(jìn)行替換,因為dayjs體積小了很多
8.上傳的時候勾選樣式自動補(bǔ)全,這個好像沒啥用但是給點心理安慰吧哈哈
總結(jié): 代碼體積過大,本身上 很多時候就是因為我們使用的插件可能有點多,注意不要過多的使用插件哈 ,因為代碼本身不是很大的
以上就是這個過程中經(jīng)驗總結(jié) 關(guān)注我 持續(xù)更新前端知識。
原文鏈接:https://yunchong.blog.csdn.net/article/details/122584730
相關(guān)推薦
- 2023-01-31 Combine中錯誤處理和Scheduler使用詳解_Swift
- 2022-03-24 C++關(guān)于指針,繼承和多態(tài)介紹_C 語言
- 2022-04-09 git拉取遠(yuǎn)程分支到本地分支
- 2023-04-20 npm ERR! 400 Bad Request - PUT xxx - Cannot publis
- 2021-12-19 Redis中緩存穿透/擊穿/雪崩問題和解決方法_Redis
- 2022-08-25 C語言詳細(xì)分析結(jié)構(gòu)體的內(nèi)存對齊規(guī)則_C 語言
- 2022-09-29 shell函數(shù)內(nèi)調(diào)用另一個函數(shù)(不帶返回值和帶返回值)_linux shell
- 2022-11-13 Python四大模塊文件管理介紹_python
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 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錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(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)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支