UniApp 微信小程序分包加载与体积优化实战:从首屏 4s 到 1s

先给结论:UniApp 打包微信小程序最容易被卡住的两件事——主包超 2MB 传不上、首屏几秒才出来。根因几乎都是「东西全塞主包」。解法就一句:用分包把非首屏页面拆出去,再把图片和组件做减法。本文给可直接抄的 pages.json 分包配置和体积红线。

一、为什么要分包

  • 主包体积红线:微信小程序主包上限 2MB(含所有首屏必要资源),整包(主包+分包)上限 20MB。主包超 2MB 直接上传失败。
  • 首屏速度:主包越小,首次启动下载越快。主包臃肿是首屏 3~4s 的元凶。
  • 按需加载:分包里的页面用到时才下载,不占首屏。

二、分包配置(pages.json 直接抄)

把非首屏的页面挪到 subPackages,每个分包有自己的 root 和 pages:

{
  "pages": [
    "pages/index/index",
    "pages/mine/mine"
  ],
  "subPackages": [
    {
      "root": "packageA",
      "pages": [
        "detail/detail",
        "list/list"
      ]
    },
    {
      "root": "packageB",
      "pages": [
        "order/order",
        "pay/pay"
      ]
    }
  ]
}

要点:pages 只放首屏必备(首页、我的);其余按业务拆到多个分包。分包之间不能互相引用,但都能引用主包公共资源。

三、体积红线与优化清单

项目红线 / 建议做法
主包≤ 2MB(硬上限)只留首屏页 + 公共组件/样式/小程序 tabBar 图标
整包≤ 20MB靠分包分摊,单分包也别太大
图片单张 ≤ 100KB 为宜小程序用 CDN 外链,本地只留 tabBar 小图标
组件库按需引入别整库 import,用到的组件才引

四、图片与组件的具体减法

  1. 图片上 CDN:小程序包里尽量不放业务图片,改用 https:// 外链(你自己的图床/CDN)。本地只保留 tabBar 图标(必须本地)。
  2. 组件按需:如果用 uView 等组件库,开启按需引入,别全量打进主包。
  3. 清理未用资源:打包前删掉没引用的图片、字体、旧页面,这些都会算进体积。
  4. 打开「运行时压缩」:HBuilderX 发行时勾选压缩,能再小一截。

五、五个常见坑

坑原因规避
主包超 2MB 上传失败首屏页引入太多组件/图片把非首屏拆分包,图片走 CDN
分包互相引用报错分包间不可跨引公共部分放主包,分包只引主包
tabBar 图标异常图标用了外链或尺寸不对tabBar 图标必须本地、81×81px 起
首屏仍慢主包虽小但首屏图大首屏图也走 CDN + 懒加载
分包没生效页面路径写错 root核对 subPackages.root 与页面真实目录

六、FAQ

Q:分包后能跨分包跳转吗? 能,用 uni.navigateTo 正常跳,路径写全(含分包 root)即可;只是「代码引用」不能跨分包。

Q:主包一定要 ≤2MB 吗? 是硬上限,超了微信开发者工具不让上传。能压到 1.5MB 内更好,首屏更稳。

Q:图片全上 CDN,离线怎么办? 小程序本就在线环境,CDN 图正常;关键图标(tabBar)留本地即可,不影响体验。

小结

UniApp 小程序「传不上 / 首屏慢」九成是主包太胖。记住三件事:首屏页 + 公共件进主包(≤2MB)、其余拆分包、图片走 CDN 只留 tabBar 图标。先把 pages.json 的分包配置改对,再砍图片和组件,首屏从 4s 降到 1s 是常规操作。具体配置以微信小程序官方分包文档和 HBuilderX 当前版本为准。

相关推荐

相关推荐

评论(0)
发表评论