一、问题:我们在小程序工具中开发时候,需要本地打包,但是当本地的打包文件大于2M时候,预览的二维码就会有问题,导致真机扫码打不开或者有遗漏。

uni uploadfile 微信小程序 iOS上传失败 uniapp小程序打包发布_uni-app分包

二、此时就需要开启分包

1.微信小程序每个分包的大小是2M,总体积一共不能超过20M。
2.开启分包后,再次编辑打包,预览的二维码就可以正常打开小程序了。

三、uni-app官方分包文档

uni uploadfile 微信小程序 iOS上传失败 uniapp小程序打包发布_微信小程序预览失败_02

四、分包注意项

1.微信小程序每个分包的大小是2M,总体积一共不能超过20M。
2.开启分包后,再次编辑打包,预览的二维码就可以正常打开小程序了。
3.开启分包,必须注意:需要将原来的打包文件unpackage下的dist文件删除;否则编译时候,你会发现自己的分包反而越来越大;删除原来打包的dist后再重新发行打包就行。

五、分包步骤1

1.在pages同级,创建pagesA和pagesB两个分包;文件夹的名字随便命名,每分一个包就创建一个文件夹;如下图
2.需要注意:小程序的首页和tabBar页必须放在主包pages内;其他页面可以放在分包内
3.分包下支持独立的 static 目录,用来对静态资源进行分包。

uni uploadfile 微信小程序 iOS上传失败 uniapp小程序打包发布_微信小程序预览失败_03

六、分包步骤2

1.将部分页面移到分包pagesA或者pagesB下;
2.注意:如果你一开始就分包了,路径跳转或者引入应该不会有问题;但是如果你一开始都是在pages下,后来才开始分包,
然后将部分vue页面移到分包文件夹下,可能路径跳转和引入的文件路径就错了,就需要手动修改跳转路径和引入路径,方式修改见下图(说多了都是泪);。

引入的修改:使用@引入

每个分包下都可以有自己的static,放置图片

uni uploadfile 微信小程序 iOS上传失败 uniapp小程序打包发布_微信小程序预览失败_04

路径跳转的修改,例如主包pages的下的index页面,跳转到了分包pagesB下的get-password页面:只需要写上get-password在pagesB的路径即可:

uni.navigateTo({
          url:
            "/pagesB/get-password?obj= " +
            encodeURIComponent(JSON.stringify(obj)),
        });

七、分包步骤3

1.更改pages.json配置:如下图。

uni uploadfile 微信小程序 iOS上传失败 uniapp小程序打包发布_微信小程序预览失败_05


1.1pages主包:不需要动,只需要方主包页面

1.2subPackages:分包加载配置,subPackages 节点接收一个数组,数组每一项都是应用的子包;subPackages 里的pages的路径是 root 下的相对路径,不是全路径。

例如我的就是放了pagesA和pagesB,一定要注意root的是写分包名称,不需要 /;path写对应的页面路径

"subPackages": [
    {
      "root": "pagesA",
      "pages": [
        {
          "path": "add-car",
          "style": {
            "navigationBarTitleText": "新增车辆"
          }
        },
        {
          "path": "car-info",
          "style": {
            "navigationBarTitleText": "详情车辆"
          }
        },
      ]
    },
    {
      "root": "pagesB",
      "pages": [
        {
          "path": "get-password",
          "style": {
            "navigationBarTitleText": "找回密码"
          }
        }
      ]
    }
  ],

1.3preloadRule:分包预载配置

uni uploadfile 微信小程序 iOS上传失败 uniapp小程序打包发布_分包_06

"preloadRule": {
    "pagesA/add-car": {
      "network": "all",
      "packages": [
        "__APP__"
      ]
    },
    "pagesA/car-info": {
      "network": "all",
      "packages": [
        "__APP__"
      ]
    },
    "pagesB/get-password": {
      "network": "all",
      "packages": [
        "pagesB"
      ]
    }
  },
2.开启分包后,再次编辑打包,预览的二维码就可以正常打开小程序了。

八、分包步骤4

1.点击左侧列表manifest.json–>源码视图,找到npm-wexin,开启分包优化
//开启分包优化
        "optimization" : {
            "subPackages" : true
        }

uni uploadfile 微信小程序 iOS上传失败 uniapp小程序打包发布_uni-app分包_07

九、分包步骤5

1.压缩代码

uni uploadfile 微信小程序 iOS上传失败 uniapp小程序打包发布_分包_08

uni uploadfile 微信小程序 iOS上传失败 uniapp小程序打包发布_微信小程序分包_09

uni uploadfile 微信小程序 iOS上传失败 uniapp小程序打包发布_分包_10

十、分包步骤6

1.删除原有的打包文件。

uni uploadfile 微信小程序 iOS上传失败 uniapp小程序打包发布_微信小程序预览失败_11

2.重新发行打包。

uni uploadfile 微信小程序 iOS上传失败 uniapp小程序打包发布_微信小程序分包_12

3.分包前后的效果对比:存在主包和分包,体积也相应变化减小,预览也可以了。

分包前:

uni uploadfile 微信小程序 iOS上传失败 uniapp小程序打包发布_uni-app分包_13

分包后:

uni uploadfile 微信小程序 iOS上传失败 uniapp小程序打包发布_微信小程序分包_14

有用就点个赞吧!