首页 > 编程语言 >微信小程序分包体积优化建议

微信小程序分包体积优化建议

时间:2023-10-18 15:24:31浏览次数:31  
标签:插件 微信 代码 程序 耗时 体积 分包 页面

代码包体积优化

启动性能优化最直接的手段是降低代码包大小,代码包大小直接影响了下载耗时,影响用户启动小程序时的体验。

开发者可以采取以下手段优化代码包体积:

1. 合理使用分包加载

推荐所有小程序使用

使用 分包加载 是优化小程序启动耗时效果最明显的手段。建议开发者按照功能划分,将小程序的页面按使用频率和场景拆分成不同分包,实现代码包的按需加载。

分包加载具有以下优势:

  • 承载更多功能:小程序单个代码包的体积上限为 2M,使用分包可以提升小程序代码包总体积上限,承载更多的功能与服务。
  • 降低代码包下载耗时:使用分包后可以显著减少启动时需要下载的代码包大小,在不影响功能正常使用的前提下,有效降低启动耗时。
  • 降低小程序代码注入耗时:若未开启按需注入,小程序编译时会将所有 js 文件打包成同一个文件一次性的注入,并执行所有页面和自定义组件的代码。分包后可以降低注入和实际执行的代码量,从而降低注入耗时。
  • 降低页面渲染耗时:使用分包可以避免不必要的组件和页面初始化。
  • 降低内存占用:分包能够实现页面、组件和逻辑较粗粒度的按需加载,从而降低内存的占用。

此外,结合分包加载的几个扩展功能,可以进一步优化启动耗时:

1.1 独立分包

小程序中的某些场景(如广告页、活动页、支付页等),通常功能不是很复杂且相对独立,对启动性能有很高的要求。独立分包可以独立于主包和其他分包运行。从独立分包页面进入小程序时,不需要下载主包。建议开发者将部分对启动性能要求很高的页面放到特殊的独立分包中。

1.2 分包预下载

在使用「分包加载」后,虽然能够显著提升小程序的启动速度,但是当用户在使用小程序过程中跳转到分包内页面时,需要等待分包下载完成后才能进入页面,造成页面切换的延迟,影响小程序的使用体验。分包预下载便是为了解决首次进入分包页面时的延迟问题而设计的。

独立分包和分包预下载可以配合使用,获得更好的效果,详情请参考独立分包与分包预下载教程

1.3 分包异步化

「分包异步化」将小程序的分包从页面粒度细化到组件甚至文件粒度。这使得本来只能放在主包内页面的部分插件、组件和代码逻辑可以剥离到分包中,并在运行时异步加载,从而进一步降低启动所需的包大小和代码量。

分包异步化能有效解决主包大小过度膨胀的问题。

2. 避免非必要的全局自定义组件和插件

app.json 中通过 usingComponents 全局引用的自定义组件和通过 plugins 全局引入的插件,会在小程序启动时随主包一起下载和注入 JS 代码,影响启动耗时。

即使扩展库和部分官方插件不占用主包大小,但是启动时仍然需要下载和注入 JS 代码,对启动耗时的影响和其他插件并没有区别。

  • 如果自定义组件只在某个分包的页面中使用,应定义在页面的配置文件中

    • 全局引入的自定义组件会被认为是所有分包、所有页面都需要的,会影响「按需注入」的效果和小程序代码注入的耗时。
  • 如果插件只在某个分包的中使用,请仅

    在分包中引用插件

    • 例如:很多小程序会用到「小程序直播」插件,但是直播功能通常不在主包页面中使用或较为低频,此时建议通过分包引入「小程序直播」插件。
    • 如果确实需要在主包中或被多个分包使用的插件,仍可以考虑将插件置于一个分包,并通过「分包异步化」的形式异步引入

3. 控制代码包内的资源文件

小程序代码包在下载时会使用 ZSTD 算法进行压缩,图片、音频、视频、字体等资源文件会占用较多代码包体积,并且通常难以进一步被压缩,对于下载耗时的影响比代码文件大得多。

建议开发者在代码包内的图片一般应只包含一些体积较小的图标,避免在代码包中包含或在 WXSS 中使用 base64 内联过多、过大的图片等资源文件。这类文件应尽可能部署到 CDN,并使用 URL 引入。

4. 及时清理无用代码和资源

除了工具默认忽略或开发者明确声明忽略的文件外,小程序打包会将工程目录下所有文件都打入代码包内。意外引入的第三方库、版本迭代中被废弃的代码或依赖、产品环境不需要的测试代码、未使用的组件、插件、扩展库,这些没有被实际使用到的文件和资源也会被打入到代码包里,从而影响到代码包的大小。

建议使用微信开发者工具提供的「代码静态依赖分析」,不定期地分析代码包的文件构成和依赖关系,以此优化代码包大小和内容。对于仅用于本地开发调试,不应包含在小程序代码包的文件,可以使用工具设置的 packOptions.ignore 配置忽略规则。

在使用打包工具(如 Webpack、Rollup 等)对小程序代码进行预处理时,可以利用 tree-shaking 等特性去除冗余代码,也要注意防止打包时引入不需要的库和依赖。

转载自 代码包体积优化

标签:插件,微信,代码,程序,耗时,体积,分包,页面
From: https://www.cnblogs.com/Megasu/p/17772443.html

相关文章

  • PHP微信墙制作,开源
    注意:由于微信官网不定时会更新,其中模拟登陆以及爬取数据的方式可能会失效,最近这12个月里,就有两次更新导致此功能需要重写。服务端源码->github地址传送门思路其实实现思路就是通过模拟登陆的方式登录到微信平台,然后通过正则表达式获取指定的内容放到数据库里面,同时这个操作要......
  • 微信小程序自定义 底部状态栏 闪烁
    微信小程序底部状态栏,自定义组件时,会出现闪烁情况,这个没有办法结局https://blog.csdn.net/weixin_44221219/article/details/130790315?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-1-130790315-blog-121462603.235^v3......
  • 微信小程序实现微信和账号密码同时登录
    前言微信小程序是一种轻量级的应用程序,可以在微信中直接使用,无需下载和安装。在微信小程序中,用户可以使用微信账号登录,也可以使用账户密码登录。本文将介绍如何在微信小程序中实现微信和账户密码同时登录。正文开始需求分析要在微信小程序中实现微信和账户密码同时登录,您需要进......
  • 【Python微信机器人】第一篇:在windows11上编译python
    前言我打算写一个系列,内容是将python注入到其他进程实现inlinehook和主动调用。本篇文章是这个系列的第一篇,后面用到的案例是注入python到PC微信实现基本的收发消息。文章着重于python方面的内容,所以对于微信找收发消息的call不会去讲过程,有兴趣的可以直接百度搜PC微信逆向。我......
  • 企业微信群机器人发送消息(三)java端如何控制
    1.先在群里添加机器人,然后获取机器人的webhook地址:假设webhook是:https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=693a91f6-7xxx-4bc4-97a0-0ec2sifa5aaa2.有多种方式发送群消息,可以采用curl,也可以采用发送http请求的方式,我这里采用okhttp发送http请求,pom如下:<!--ht......
  • 企业微信群机器人发送消息(二)机器人配置说明
    如何使用群机器人在终端某个群组添加机器人之后,创建者可以在机器人详情页看的该机器人特有的webhookurl。开发者可以按以下说明a向这个地址发起HTTPPOST请求,即可实现给该群组发送消息。下面举个简单的例子.假设webhook是:https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key......
  • 微信里写周报添加到公司办公平台的方法
    概要微信和公司用的办公平台互通,我们已经说过几篇。这次将给大家介绍,如何在微信里写周报内容,添加到公司办公平台的周报应用里。工作中,如果出差在外,或者回到家想要汇报一周的工作情况的时候,不用下载额外的app,只需要通过常用的微信就可以向办公系统里添加记录,是不是很酷?由于正式......
  • 万户OA域控集成企业微信-删除离职用户
    OA与域控集成后,在域控中禁用/删除用户后,OA同步禁用,但是对接的企业微信并未删除用户。Quartz计划任务classDeleteWeiXinUserJob:IJob{publicstaticstringcorpid=ConfigurationManager.AppSettings["corpid"];publicstaticstringsecrect=Configu......
  • 【移动开发学习】 Android Studio 编写一个简单的微信界面
    AndroidStudio简单还原微信ui目标实现3-4个tab的切换效果技术需求activity,xdm,fragment,recyclerview成果展示其中联系人界面通过recyclerview实现了可以滑动列表      仓库地址https://github.com/SmileEX/wecaht.git实现过程主要ui第......
  • 微信小程序开发1
    index.wxml文件中:根据我们前面说的官方文档学习可以大概知道,这个文件里主要涉及到的是前端代码,所以这里就比较简单了,写上你要展示的前端代码就行:在微信页面中的视图容器<view>标签来写,这个标签相当于html页面中的<div>标签,我们看看官方文档介绍主要还是负责一些位置控制啥的,理解起......