我的编程空间,编程开发者的网络收藏夹
学习永远不晚

微信小程序包大小超过2M的解决方法—分包加载

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

微信小程序包大小超过2M的解决方法—分包加载

小程序的包被限制在2M以下, 超出的时候点击预览, 发现报错:
Error: 代码包大小为 3701 kb,上限为 2048 kb,请删除文件后重试

解决方法:

  1. 优化代码, 删除掉不用的代码

  2. 图片压缩或上传服务器

一般图片所占空间较大,尽量不要放在小程序本地文件夹中,如果图片不多我们也可以对图片进行压缩,我经常使用的图片压缩平台:点击这里;

也可以将图片上传到服务器上,进行外链引用, 我们使用的是阿里云oss存储, 另外也可以通过图片托管平台对图片进行托管, 我找到的的图片托管平台:点击此处;

另外, 通过cli命令创建的uni app项目,可将图片或字体图标放入assets文件夹下,通过require引入, 也可减少主包大小

  1. 分包加载

官方推出小程序分包加载这一功能,对于万千小程序开发者来说这无疑是天大的喜讯,关于如何分包,微信官方文档已经解释的十分清楚,在进行分包之前建议认真阅读官方文档。

对于用户来说,小程序的加载流程变成了:

1,首次启动,加载小程序主包,显示主包内的页面
2,如果用户进入了某个分包的页面,再加载这个对应分包,显示分包的页面

采用分包加载,对于开发者而言,能使小程序有更大的代码体积,承载更多的功能和服务,对于用户而言,可以更快的打开小程序,同时再不影响启动速度的前提下使用更多功能。

分包的划分:

在配置前首先需要开发者规划下各个分包需要容纳的内容,建议开发者按照功能划分的原则,将同一个功能下的页面和逻辑放置于同一个目录下,对于一些跨功能之间的公共逻辑,将其放置于主包下,这样可以确保在分包引用这部分功能时,这部分的逻辑一定存在。

在分包划分时,应该注意以下事项:

1,避免分包与分包之间引用上的耦合。因为分包的加载是用户操作触发的,并不能确保其分包加载时,
另一个分包就一定存在,这个时候可能导致js逻辑异常,某些资源找不到的错误;
2,一些公共用到的自定义组件,需要放在主包内;
3,使用小程序自带的tab切换时,list中的页面需要放在主包内。

分包的配置:(微信客户端 6.6.0,基础库 1.7.3 及以上版本开始支持。)

当理清了分包的划分后,就可以进行分包的配置了,这一步并不复杂。

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

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

开发者通过在 app.jsonsubPackages字段声明项目分包结构:

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

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

整个小程序所有分包大小不超过 20M
单个分包/主包大小不能超过 2M

低版本兼容:

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

示例项目:

下载 小程序示例(分包加载版)源码

接下来简单介绍一下在不同框架中的使用:

1、在uni app中:

uni app通过cli初始化的小程序目录结构如下:

 ├── class="lazy" data-src    ├── main.js    ├── App.vue    ├── pages.json    ├── manifest.json    ├── orderPackages    │   └── pages    │       ├── goodsDetail    │       └── myorder    ├── pages    │   ├── index    │   └── user    └── utils

需在pages.json中配置 subPackages 字段::

{  "pages": [    {      "path": "pages/index/index",      "style": {        "navigationBarTitleText": "首页"      }    },    {      "path": "pages/user/user",      "style": {        "navigationBarTitleText": "个人中心"      }    }  ],  "subPackages": [{    "root": "orderPackages",    "pages": [{        "path": "pages/goodsDetail/goodsDetail",        "style": {          "navigationStyle": "custom"        }      },      {        "path": "pages/myorder/myorder",        "style": {          "navigationBarTitleText": "我的订单"        }      }    ]  }]}

在页面中跳转分包页面路径:

uni.navigateTo({     url: `/orderPackages/pages/order/order`})
2、在taro中:

taro初始化的小程序目录结构如下:

├── class="lazy" data-src    ├── app.js    ├── app.scss    ├── index.html    ├── packageA    │   └── pages    │       ├── goodsDetail    │       └── myorder    ├── pages    │   ├── index    │   └── user    └── utils

需在app.js中配置 subPackages 字段:

config = {    pages: [      'pages/index/index',      'pages/user/user'    ],    subPackages: [      {        'root': 'packageA',        'pages': [          'pages/goodsDetail/goodsDetail',          'pages/myorder/myorder'        ]      }    ]  }

在页面中跳转分包页面路径:

taro.navigateTo({     url: `/orderPackages/pages/order/order`})

以上只罗列了uni app和taro框架分包加载的步骤, 原生小程序分包方法根据官方文档即可快速实现,小程序框架虽多, 大都大同小异,如果后续有使用其他框架进行开发,会进行补充。

来源地址:https://blog.csdn.net/joe0235/article/details/129982536

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

微信小程序包大小超过2M的解决方法—分包加载

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

微信小程序大小超限除了分包怎么避免和解决

这篇“微信小程序大小超限除了分包怎么避免和解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“微信小程序大小超限除了分包怎么避
2023-06-22

微信小程序代码包大小的优化方法

这篇文章主要讲解了“微信小程序代码包大小的优化方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“微信小程序代码包大小的优化方法”吧!setDatasetData是小程序开发中使用最频繁的接口
2023-06-26

使用uniapp打包微信小程序时主包和vendor.js过大解决(uniCloud的插件分包)

每个使用分包小程序必定含有一个主包,所谓的主包,即放置默认启动页面/TabBar页面,以及一些所有分包都需用到公共资源/JS脚本,下面这篇文章主要给大家介绍了关于使用uniapp打包微信小程序时主包和vendor.js过大解决的相关资料,,需要的朋友可以参考下
2023-02-21

php微信小程序解包过程的案例分析

这篇文章给大家分享的是有关php微信小程序解包过程的案例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。这个解包只能看个大概1.找到小程序压缩包1.1、手机root或安装模拟器(我用的是夜神)1.2、在模拟器上
2023-06-14

使用uniapp打包微信小程序时主包和vendor.js过大如何解决

这篇文章主要介绍“使用uniapp打包微信小程序时主包和vendor.js过大如何解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“使用uniapp打包微信小程序时主包和vendor.js过大如何解
2023-07-05

uni-app做微信小程序的分包处理方法

分包指的是把一个完整的小程序项目,按照不同的需求划分为不同的子包,在构建时打包成不同的分包,用户在浏览时按需加载,这篇文章主要介绍了uni-app做微信小程序的分包处理,需要的朋友可以参考下
2023-02-18

【微信小程序开发】学习小程序的模块化开发(自定义组件和分包加载)

前言 模块化开发是一种将复杂的应用程序分解为一系列独立的模块,每个模块负责完成特定的功能的开发方式。模块化开发可以提高代码的可维护性和可复用性,使开发过程更加高效和灵活。 文章目录 前言模块化开发的重要性和优势自定义组件自定
【微信小程序开发】学习小程序的模块化开发(自定义组件和分包加载)
2023-12-22

node.js中PC端微信小程序包解密的处理方法是什么

这篇文章主要介绍“node.js中PC端微信小程序包解密的处理方法是什么”,在日常操作中,相信很多人在node.js中PC端微信小程序包解密的处理方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”nod
2023-06-25

微信小程序 - 完美解决 web-view 公众号文章或第三方网站分享转发后,打开提示 “无法打开该页面,不支持打开” 或 “页面不存在”(IOS 苹果系统打开是空白页,安卓系统会有提示)超详细排查

前言 由于出现这种问题的原因有很多种,绝对不像其他文章教程那样无效,本文提供了超级详细的排查思路与解决方案。 本文从 [初步排查] 到 [代码排查],完美解决 因各种原因导致 webview 页面分享后,用户打不开提示错误 这类问题,
2023-08-16

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录