uniapp subPackages bug

133 阅读2分钟

分包的加载配置

小程序有体积资源加载限制 各个平台都提供了分包方式 优化小程序的启动速度下载

所谓的主包 就是在pages.json里面的pages数组 也就是默认启动页面

主包页面

"page.json"
// 数组中的第一项表示应用的启动页面
"pages": [
    {
        "path": "pages/home/home",
        "style": {}
    },
    {
        "path": "pages/cart/cart",
        "style": {}
    },
    {
        "path": "pages/list/list",
        "style": {}
    }
],
"subPackages": [{}],
"tabBar": {}
"preloadRules": {}

subPackages分包配置

分包则是根据pages.json里面的subPackages进行配置划分的

subPackages里的路径是 root下的相对路径 不是全路径

subPackages节点接收一个数组 数组每一项都是对应的子包

对应值 root 子包的根目录 pages 子包由哪些页面组成的

"pages.json"
"subPackages": [
    // 分包页面
    {
        "root": "pageA",
        "pages": [
            {
                "path": "pageA/list.list",
                "style": {
                    "navigationBarTitleText": "", // 导航栏标题内容
                    "enablePullDownRefresh": false // 是否开启下拉刷新
                }
            }
        ]
    },
    {
        "root": "pageB",
        "pages": [
            {
                "path": "pageB/detail/detail",
                "style": {
                    "navigationBarTitleText": "", // 导航栏标题内容
                    "enablePullDownRefresh": false // 是否开启下拉刷新
                }
            }
        ]
    }
]

preloadRule预下载规则

配置preloadRule后,进入小程序某个页面时,由框架自动与下载需要的分包提升进入后续启动速度

preloadRule参数 key是页面路径value进入页面的预下载配置

packages 字符串数组 进入页面后预下载分包root App表示主包

network all不限网络 wifi仅wifi下载

app分包 同支持preloadRule 但网络规则无效

{
    "preloadRule": {
        "pageA/index/index": {
            "packages:" ["pageA"],
            "network": "all"
        },
        "pageB/list/list": {
            "packages": ["__App__"],
            "network": "all"
        }
    }
}

体积限制

总体积不能超过20M

单个分包/主包/不超过2M

uniapp小程序打包体积过大

图片压缩一下 避免静态资源占用太多内存

开发时阶段运行时是否压缩代码勾选上

如果还是过大采用分包 配置分包路径已经在pages.json中已经配置好了

重点 分包之后 主包分包体积都没有超过2M 但是微信开发者工具想要真机调试,这时候提示主包体积过大 大概提示main packageXXXXXX image.png

解决配置 根目录下面 manifest.json 在 源码视图文件中 "mp-weixin" 里面添加如下代码

"manifest.json"
"mp-weixin": {
    "appid": "1234567890",
    "optimization": { // 配置完成之后,分包的依赖只会打到分包里面去
        "subPackages": true
    }
}