uniapp 解决主包过大问题(vendor文件过大,使用了echart或其他类似的大型组件),已解决

问题:

在我的一个项目(uniapp的微信小程序)中,项目一开始没有管主包大小,只管埋头开发,但是到需要发布的时候,发现主包大小竟然有10mb,完全不满足小于2mb的需求,于是我开始尝试减少主包大小

方法一:

最简单的方法,开启文件压缩,勾选运行时是否压缩,勾选之后再运行,这一步已经能够解决大部分的情况了,我的包大小从10mb减小到了4mb,仍然无法满足需求

方法二:

删除无用依赖和文件

删除无用依赖大家可以通过微信小程序的代码依赖分析功能来

可以看到有一个无依赖代码文件数,可以通过这个找到无用的依赖代码,下面的是我删除之后的,删除之前有一个1mb大小的无用依赖,然后还删除了一些无用的代码,零零散散减少了几十kbok,现在大小来到3mb,还是不符合需求

方法三:

对项目进行分包

这个方法对于已经开发了很多的项目来说,会非常痛苦,因为需要大量移动文件,但是,谁让当初没有注意分包呢呜呜,开干吧

分包步骤:

1.在manifest.json文件中开启分包

"mp-weixin" : {
        "optimization" : {
            "subPackages" : true
        }
    },

2.在page.json文件里面进行配置

语法如下

"pages": [
    ],
"subPackages":[//于pages同级
	{
		"root":"pages_dam_mdm",//页面所在文件夹名称
		"pages":[ 
			{
				"path" : "mdm/CAMERA/index",//不需要加上root,其余规则与pages内的相同
				"style" : 
				{
					"navigationBarTitleText" : "视频监视"
				}
			}
		]
	}
]

目录结构如下

并且分包内的页面,能使用主页面的组件但是主页面的不能使用分页面的组件

分页之前,我们需要明确,哪些页面应该合在一起,尽可能使,分包内的页面只在自己包内使用组件,减少主包的组件,这样能够减少主包大小,而且最重要的一点,依赖相同的页面尽可能在同一个分包内,比如你有多个页面使用了echarts组件(注意,这个组件非常非常大),如果这些文件分散在不同的包里面,uniapp会将依赖打入主包中,增加主包负担!

然后我就开始慢慢开始分包,但是一开始我发现每个分包(已经分了不少文件)只能分出几十顶多一百多kb,这就很奇怪,看样子根本不能明显缩小主包,知道我将所有使用了echart组件的页面分在一个包内,刷,主包直接小了1mb!也就是上文提到的情况

可以看到分包效果十分显著,主要的内存就是由echart依赖导致的,因此以后我们开发的时候一定要注意分包问题,以及大型依赖放入同一分包下的重要性

总结:

第一步:开启文件压缩

第二步:删除无用依赖和文件

第三步:进行分包(使用了相同依赖的包尽可能放在同一包内)

  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用\[1\]和引用\[2\]的内容,Uniapp在开发工具Hbuilder X中,如果在项目的page.json文件中编写分包管理的配置,不会影响其他平台的打包。分包加载是小程序的一种机制,可以将小程序的代码和资源分成多个子包,以便更好地管理和加载。小程序限制一个包不能超过2M,但可以分成9个子包,整个小程序的总大小不能超过20M。为了解决分包后主包超过2M的问题,可以在manifest.json文件中的mp-weixin节点下添加以下代码:"optimization": { "subPackages": true },这样就开启了分包优化,分包的js文件将不再打包到主包vendor.js中。你可以参考引用\[2\]中提供的链接和引用\[3\]中的微信小程序分包管理文档来了解更多关于分包的详细信息。 #### 引用[.reference_title] - *1* *3* [uni-app 打包微信小程序 提示 包体积过大。无法上传,无法预览,无法手机在线调试。](https://blog.csdn.net/weixin_39793790/article/details/105147035)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [uniapp 微信小程序打包 vendor.js过大 导致打包超过2M](https://blog.csdn.net/qq_36904182/article/details/118761161)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值