使用微信开发者工具开发的微信小程序——上传前进行分包

微信小程序写到最后即将上传发现主包大小要求不能超过1.5MB?

打开微信小程序官方文档查看如何分包发现也不是很理解?

网上寻找分包教程发现都是把官方文档复制过来根本没有实际性帮助?

这篇文章将详细讲解如何对微信小程序进行分包。

(这篇的分包方法可能不符合提高用户体验感的要求,但是可以让你基本学会如何进行分包,最主要的是,能够让小程序符合上传的要求)

打包需要注意的一些事情:

  • 微信小程序要求整体大小不超过20MB,每个分包不超过1.5MB
  • 用subpackages配置打包路径(具体如何配置见下文)
  • tabBar页面必须在主包内
  • ubpackage的根目录不能是另外一个ubpackage内的子目录

先附上官方文档对分包的讲解:

配置方法

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

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

开发者通过在 app.json subpackages(或subPackages)字段声明项目分包结构:

​
{
  "pages":[
    "pages/index",
    "pages/logs"
  ],
  "subpackages": [
    {
      "root": "packageA",
      "pages": [
        "pages/cat",
        "pages/dog"
      ]
    }, {
      "root": "packageB",
      "name": "pack2",
      "pages": [
        "pages/apple",
        "pages/banana"
      ]
    }
  ]
}

​

具体内容在下面操作讲解中也会强调

subpackages中,每个分包有以下几项配置:

字段类型说明
rootString分包根目录
nameString分包别名,分包预下载时可以使用
pagesStringArray分包页面路径,相对于分包根目录
independentBoolean分包是否是独立分包

打包原则

  • 声明 subpackages 后,将按 subpackages 配置路径进行打包,subpackages 配置路径外的目录将被打包到主包中
  • 主包也可以有自己的 pages,即最外层的 pages 字段。
  • subpackage 的根目录不能是另外一个 subpackage 内的子目录
  • tabBar 页面必须在主包内

引用原则

  • packageA 无法 require packageB JS 文件,但可以 require 主包、packageA 内的 JS 文件;使用 分包异步化 时不受此条限制
  • packageA 无法 import packageB 的 template,但可以 require 主包、packageA 内的 template
  • packageA 无法使用 packageB 的资源,但可以使用主包、packageA 内的资源

低版本兼容

由微信后台编译来处理旧版本客户端的兼容,后台会编译两份代码包,一份是分包后代码,另外一份是整包的兼容代码。 新客户端用分包,老客户端还是用的整包,完整包会把各个 subpackage 里面的路径放到 pages 中。

下面我将以此目录为例具体讲解如何分包

如图所示,pages下有index、logs、page_1、page_2、page_3、page_4六个页面。我将把index和logs页面放在主包中(具体哪些东西放在主包中可根据需求和内容大小进行调整),page_1、page_2、page_3、page_4四个页面分别放到四个包中。

在app.json中声明subpackages

  "pages": [
    "pages/index/index",
    "pages/logs/logs"
  ],
  "subpackages":[
    {
      "root":"packageA", //分包的根路径,彼此之间不可以重复
      "name":"pack1",  	//分包的标识名字,用于预加载分包时用
      "pages":[			//分包的路径(不预加载的时候,用户进入分包路径才会加载分包资源)
        "pages/page_1/page_1"
      ],
      "independent":false   //是否独立分包(可以不加载主包就独立加载的包,独立分包不能当做全局资源)
    },
    {
      "root":"packageB",
      "name":"pack2",
      "pages":[
        "pages/page_2/page_2"
      ],
      "independent":false
    }
  ],

关于图片的存放问题

需要将页面中要用到的图片一起打包放在页面根目录下,因为相较于代码,图片较大,之所以要进行分包操作主要也是因为图片太多太大,将每个页面要用到的图片进行分包才能达到分包的目的。

如何查看分包详情

可以在代码依赖分析处查看分包详情以及各个页面的内容大小。

另外,在微信小程序编写的过程中,一定要注意路径的正确使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值