• home > webfront > AppDev > taro >

    taro微信小程序独立分包解决方案:将小程序按需加载子包

    Author:zhoulujun Date:

    开发者需要将小程序划分成不同的子包,在构建时打包成不同的分包,用户在使用时按需进行加载。微信小程序主包限制为2MB,虽然限制大小是对小程序启动速度的考虑,但是业务不能砍掉呀。只能用微信小程序提供分包来解决

    在编写小程序的时候,因为业务的拓展逻辑更加复杂,导致小程序体积越来越大,但是小程序是有体积限制的,微信小程序主包限制为2MB

    微信官方基础库版本1.7.3之前是每个包(分包、主包)限制大小1M,超过该体积无法上传,而后改为2M。

    分包后,总包体积限制在8m内。

    但是通过微信CI上传可以绕过这个问题

    虽然限制大小是对小程序启动速度的考虑,但是业务不能砍掉呀。只能用微信小程序提供分包来解决。

    这里可以先预览一遍:


    分包加载

    某些情况下,开发者需要将小程序划分成不同的子包,在构建时打包成不同的分包,用户在使用时按需进行加载

    在构建小程序分包项目时,构建会输出一个或多个分包。分包小程序必定含有一个主包,和多个分包。

    • 主包:即放置默认启动页面/TabBar页面,以及一些所有分包都需用到公共资源/JS 脚本;

      • 注:TabBar 页面必须在 app(主包)内

    • 分包:则是根据开发者的配置进行划分。

    由于Taro是通过webpack方式进行构建打包的,所以无需考虑过度引用分包的问题。

    分包原理:

    在小程序启动时,默认会下载主包并启动主包内页面,当用户进入分包内某个页面时,客户端会把对应分包下载下来,下载完成后再进行展示。

    目前小程序分包大小有以下限制:

    • 整个小程序所有分包大小不超过 8M

    • 单个分包/主包大小不能超过 2M

    对小程序进行分包,可以优化小程序首次启动的下载时间,以及在多团队共同开发时可以更好的解耦协作

    如何在项目中进行分包

    小程序官方文档指示 微信小程序分包

    ├── app.js
    ├── app.json
    ├── app.wxss
    ├── packageA
    │   └── pages
    │       ├── cat
    │       └── dog
    ├── packageB
    │   └── pages
    │       ├── apple
    │       └── banana
    ├── pages
    │   ├── index
    │   └── logs
    └── utils

    开发者通过在 app.json subpackages 字段声明项目分包。

    {
      "pages":[
        "pages/index",
        "pages/logs"
      ],
      "subpackages": [
        {
          "root": "packageA", // 分包根目录
          "pages": [          // 分包下的页面路径,相对与分包根目录
            "pages/cat",
            "pages/dog"
          ]
        }, {
          "root": "packageB",
          "name": "pack2",   //分包别名,分包预下载(https://developers.weixin.qq.com/miniprogram/dev/framework/subpackages/preload.html)时可以使用
          "pages": [
            "pages/apple",
            "pages/banana"
          ]
        }
      ]
    }

    Taro项目进行分包(与微信小程序一致) 在src目录下app.jsx中进行配置

    2.png


    小程序分包影响面和解决方案

    • 页面放入分包后,会对原有的页面路径改变,造成用户访问原来的页面404

      1. 兜底方案1:保留原有的页面路径在主包中,只保留跳转逻辑代码,用户进入后可直接跳入到相应分包页面。

      2. 兜底方案2:在入口文件app.ts didShow(小程序的onLaunch)加入路径页面判断跳转,跳转进入分包页面。

    • 基于小程序更新机制,发布新版本小程序之后,无法立刻影响所有现网用户

      1. 最差情况下是24小时完成全部版本下发更新(官方)

      2. 在小程序入口增加UpdateManager管理更新



    参考文章:

    小程序如何分包 (Taro成功案例--原生微信小程序分包一致) https://blog.csdn.net/weixin_46662539/article/details/121165286

    使用Taro3将项目作为独立分包运行在京购小程序中 https://jelly.jd.com/article/6103c2ec0db306522756f683




    转载本站文章《taro微信小程序独立分包解决方案:将小程序按需加载子包》,
    请注明出处:https://www.zhoulujun.cn/html/webfront/AppDev/taro/8864.html