我这个项目是这样的。
主包pages内有四个tabBar页面和一个登录页。还没写啥呢。
然后我在里面加了一个页面,开始写,发现插件市场我下载了一个echarts插件和一个uview组件库加上一些自己写的组件和公共方法的。这就主包过大了,变成了4MB附近了。
我就准备分包一下,因为听说分包后,主包只留tabBar几个页面,因为我tabBar几个页面根本没有引入过uview和echarts组件,所以按道理应该不会过大的。但是我分包后,一点作用没有啊。分包是有了,但是只是把我写的页面分过去了,分包大小也只有80kb。我发现uni_modoules内的插件都还是算在主包大小内的。这是为什么呢。明明我主包都没有用过这些插件,不是打包的时候应该不会算在主包里吗。等我打开分包的时候引入才会下载分包的资源吗。
请问这种情况要如何处理呢。还是说我需要把uni_modoules内的插件也是一起移到分包里找个文件夹放着才行?
你主包页面引用分包页面没?还有,可以放弃使用echarts转用ucharts,虽然样式少一点
引用自chatGPT希望对你有帮助:
在uni-app中,插件市场中下载的插件会默认被打包到主包中。如果插件文件过大,会导致主包过大,影响应用启动速度。为了解决这个问题,你可以考虑将插件放到分包中,让应用启动时不需要加载这些插件,只有在需要使用插件时才会下载对应的分包。
你可以按照以下步骤将插件放到分包中:
1.在manifest.json文件中,将插件所在的模块(如uni_modules/echarts)添加到subPackages数组中,指定分包的路径和文件名,例如:
"subPackages": [
{
"root": "pages/subPackage",
"name": "subPackage",
"pages": [
"subPageA",
"subPageB"
]
},
{
"root": "uni_modules/echarts",
"name": "echarts"
}
]
2.在需要使用插件的页面中,使用require方法引入插件模块,例如:
const echarts = require('@/uni_modules/echarts/js/echarts.js');
这样做可以让应用在启动时不会加载插件模块,只有在需要使用时才会下载对应的分包,从而减小主包的体积,提高应用启动速度。
需要注意的是,分包的大小也会对应用启动速度产生影响,因此要根据实际情况合理划分分包。另外,如果插件模块被多个页面使用,可以将其放到独立的分包中,以提高代码复用性和减小分包数量。