• uniapp 之使用分包——起源于微信错误码——800051


    故事起源

    最近一直在用uni-app开发微信小程序。良久没有真机调试和发布。一步小心,居然发现它错了。

    message:Error: 系统错误,错误码:80051,source size 2169KB exceed max limit 2MB [20210915 14:30:39][wxe41256ffb86e9b9c]

     原来小程序有体积和资源加载限制。在微信小程序中,每个包不能超过2M,总计不能超过20M。好吧,原来,叫小程序真的有原因的。2169K > 2M。话说,这里的2M是2048K还是2000K ?

    然后,我顺着思路用了两种方法,这里就不详细叙述了。方法一,压缩公共资源。结果,还是太大了。第二步,把图片转换为网络的,小程序里只是引用。然而……

     所以,我的项目中,公共资源似乎并不多。

    这两个是不成熟的方法,不能更大程度上的解决问题。本来处在临界状态,一直会战战兢兢、如履薄冰。这个方法,月光族月末时的勤俭节约。可以,月光族节俭一段时间后,会空间充裕,而小程序包却不能。还好,有另一条路——分包。

     解决方法 : 分包

    假设支持分包的目录结构如下:

    ┌─pages               
    │  ├─index
    │  │  └─index.vue    
    │  └─login
    │     └─login.vue    
    ├─pagesA   
    │  ├─static
    │  └─list
    │     └─list.vue 
    ├─pagesB    
    │  ├─static
    │  └─detail
    │     └─detail.vue  
    ├─static             
    ├─main.js       
    ├─App.vue          
    ├─manifest.json  
    └─pages.json            
        

    则需要在pack.json中填写:

    {
        "pages": [{
            "path": "pages/index/index",
            "style": { ...}
        }, {
            "path": "pages/login/login",
            "style": { ...}
        }],
        " subPackages ": [{
            "root": "pagesA",
            "pages": [{
                "path": "list/list",
                "style": { ...}
            }]
        }, {
            "root": "pagesB",
            "pages": [{
                "path": "detail/detail",
                "style": { ...}
            }]
        }],
        "preloadRule": {
            "pagesA/list/list": {
                "network": "all",
                "packages": ["__APP__"]
            },
            "pagesB/detail/detail": {
                "network": "all",
                "packages": ["pagesA"]
            }
        }
    }

    这里的 subPackages 表示分包加载配置,此配置为小程序的分包机制,

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

    嗯,这个方法可用。不过,我知道的太晚,有好多页面地方要改路径——枯了!看来,我的代码有待优化。

    关于pages.json的配置可以查看官网的说明,当然,我也誊写了官网的说明。

     参考网址

  • 相关阅读:
    学习笔记—二进制和精度问题
    学习笔记—Buffer的常用方法与实现
    学习笔记—Node中第三方模块
    学习笔记—npm的介绍与使用
    .NET中序列化(一)
    .NET中序列化(二)
    JavaScript在多浏览器下杂谈1for循环
    .NET中序列化(三)
    DLCB额度切分
    DLCB解决问题的思路
  • 原文地址:https://www.cnblogs.com/luyj00436/p/15272097.html
Copyright © 2020-2023  润新知