微信小程序 31 分包机制
31.1 常规分包
如果说 我们写的小程序 整体 大于了 2M 怎么办呢?可以说这个情况 在如今小程序 日益壮大 、火热 下,是很容易出现的。一个好的小程序 必定会很大。功能多,界面多,无论你怎么 做优化 和压缩 其实 都会 超过 2M。
答:分包机制。小程序官方 提供了这样的 一个机制。可以把整个小程序 进行 分包。单个 分包/主包 不能超过 2MB 大小!所有分包 加在一起的大小 不超过 16MB。
注意
- 加载小程序的时候 还是 先加载主包,当需要访问分包的页面时,才会加载分包的内容。
分包的页面可以访问主包的文件、数据、图片 等资源
- 除了分包以外的内容都会被打包到主包中去。主包通常会打包一些 tarBar 页面。
除了 tarBar 页面,在开始时 不需要加载的 页面 其实都应该 想办法 将其分包。
- 直接新建 分包目录,然后 把 对应的 页面 放到 目录下。
app.js
配置分包
{"pages": ["pages/index/index","pages/login/login","pages/personal/personal","pages/video/video","pages/search/search"],"style": "v2","sitemapLocation": "sitemap.json","window": {"navigationBarBackgroundColor": "#d43c33","navigationBarTextStyle": "white","navigationBarTitleText": "云音乐"},"tabBar": {"color": "#333","selectedColor": "#d43c33","list": [{"pagePath": "pages/index/index","text": "主页","iconPath": "/static/images/tabs/tab-home.png","selectedIconPath": "/static/images/tabs/tab-home-current.png"},{"pagePath": "pages/video/video","text": "视频","iconPath": "/static/images/tabs/select.png","selectedIconPath": "/static/images/tabs/selected.png"},{"pagePath": "pages/personal/personal","text": "个人中心","iconPath": "/static/images/tabs/tab-my.png","selectedIconPath": "/static/images/tabs/tab-my-current.png"}]},"requiredBackgroundModes": ["audio"],"subpackages": [{"root": "songPackage","pages": ["pages/recommendSong/recommendSong","pages/songDetail/songDetail"]},{"root": "otherPackage","pages": ["pages/other/other"]}]
}
去更改相关的代码
31.2 独立分包
什么是 独立分包呢 ?
答:独立分包最主要的特点在于 可单独访问分包的内容,不需要下载主包。独立分包是不依赖于主包和其他包独立存在的内容!(也就是说当我独立分包的页面加载的时候,就绝对不会加载其它的页面。即使我用到了其他页面的东西,我也不加载!)
使用场景:通常某些页面和当前小程序的其他页面关联性不大的
时候,就可以 进行 独立分包了。比如说 临时添加的 广告页
或者 活动页
。
- 举例
你比如说,我们 所有的 iconfont 其实都是 依赖于 主包 的 app.wxss 的。
那么 我们 如果 把 一个 分包 设为 独立分包的话。是不是 iconfont 就不会被 加载。这是肯定的!
首先 直接 在 app.json
里面 对 其中一个 分包配置那里,添加一个 属性 "independent": true
这个 分包 就会变成 独立分包了。对的,就这么简单!!!
我们细心的发现 确实 所有的 iconfont 都消失了!
这个时候怎么办呢?答:因为 独立分包了,所以 是一个 独立的 个体,那么 自己的 iconfont 就自己 导入呗。能咋办?
你看,这样不就 恢复了嘛。
31.3 分包预下载
分包预下载 是必须要开发的一个功能!这个是 无可厚非的。基本上大多数产品的初衷 都是考虑到 广大用户的体验的。而用户 打开小程序某个页面的加载速度,想要得到 质的提高。就必须 得 预下载!而不是 说 做什么 优化。预下载 是 最简单 粗暴 的 提高方式!
当你预下载完 资源后,打开页面的速度 肯定是 质的飞跃和提高!
其实 使用起来 也很简单啊,都是 配置级别的 使用方式。
app.json
当中直接配置
{"pages": ["pages/index/index","pages/login/login","pages/personal/personal","pages/video/video","pages/search/search"],"style": "v2","sitemapLocation": "sitemap.json","window": {"navigationBarBackgroundColor": "#d43c33","navigationBarTextStyle": "white","navigationBarTitleText": "云音乐"},"tabBar": {"color": "#333","selectedColor": "#d43c33","list": [{"pagePath": "pages/index/index","text": "主页","iconPath": "/static/images/tabs/tab-home.png","selectedIconPath": "/static/images/tabs/tab-home-current.png"},{"pagePath": "pages/video/video","text": "视频","iconPath": "/static/images/tabs/select.png","selectedIconPath": "/static/images/tabs/selected.png"},{"pagePath": "pages/personal/personal","text": "个人中心","iconPath": "/static/images/tabs/tab-my.png","selectedIconPath": "/static/images/tabs/tab-my-current.png"}]},"requiredBackgroundModes": ["audio"],"subpackages": [{"root": "songPackage","pages": ["pages/recommendSong/recommendSong","pages/songDetail/songDetail"],"independent": true},{"root": "otherPackage","name": "other""pages": ["pages/other/other"]}],"preloadRule": {/*index 加载完成后 需要 预下载哪个包*/"pages/index/index": {"network": "all", /*预下载 网络模式 all 就是数据和wifi都可以,wifi 就是光 wifi 模式 下载*/"packages": ["songPackage","other"]}}
}
"name": "other"
这个属性 是 别名机制,就是 可以 给我们的 一个 分包 弄一个 别名。当然 预下载 可以 识别 这个 别名。
注意:app.json 中 不能 随便写 注释,其实 很多 关键的 配置文件 都是如此的。否则会报错!
- 什么时候 我们会 预加载 主包
这个 属实 是 不知道 什么时候 加载。你说 独立分包去 加载主包吧 ~ 实际上 加载了 也没啥用。还是独立的。那么 到底什么时候 加载 主包呢。广大网友知道的,请在评论区 告知。
微信小程序 31 分包机制相关推荐
- hbuilderx 小程序分包_基于uniapp的微信小程序之分包
0. 缘由 最近工作在接触uni-app,用它来开发微信小程序,也是第一次接触,找了很久,还有大佬用自己写的函数做的,俺觉得我不会也不配,刚好看到下面评论是官方也支持了,所以就用官方的了,这里记录一下 ...
- 微信小程序的分包功能
微信小程序的分包 做小程序开发的人都知道,微信小程序上传包的大小最大为2M,,超过之后就无法上传,那么我们如何解决较大的项目呢,那么就要采用分包配置了,下面是分包的一些说明: 微信小程序每个分包的大小 ...
- uniapp开发微信小程序设置分包,简单易学(图解)
我们使用uniapp开发微信小程序的时候,当我们的包体积过大的时候,无法真机模拟 因为小程序单个包只支持2MB,所以这时候我们要选择去分包. 有人要问了分包难吗?分包很简单.但是 最重要的来了,分包这 ...
- 微信小程序之分包加载,解决代码超过2M的方法
2017.01.09 小程序上线时,微信限制了代码包不能超过1MB 大小,(现在是2M了)限制大小是出于对小程序启动速度的考虑,希望用户在使用任何一款小程序时,都能获得一种"秒开" ...
- HbuilderX微信小程序uniapp分包小白教程趟坑【伸手党福利】【干货】
本教程为小白教程,主管操作,具体原理讲解欢迎评论区补充. 微信小程序分包原因: 1.多人开发 2.引入了大型js 3.单项目多模块需要分包 官方资料: https://developers.weixi ...
- 微信小程序登陆验证机制理解及实现
椰汁笔记,欢迎指正 微信小程序的登录(python flask实现后端),实现的核心是 让服务器得到用户的openid. 服务器生成sessionId发送给客户端,sessionId即是客户端和服务器 ...
- 微信小程序的分包加载
文章目录 前情提要 小程序的包结构 app.json声明包结构 独立分包 声明独立分包 分包预下载 声明分包预下载 搭建静态资源服务器 小程序项目 app.json 主包 app.wxss app.j ...
- 微信小程序_23,分包
什么是分包: 分包指的是把一个完整的小程序项目,按照需求划分为不同的子包,在构建时,打包成不同的分包,用户在使用时按需进行加载 分包的好处: 可以优化小程序首次启动的下载时间 在多团队共同开发时可以更 ...
- Windows电脑反编译微信小程序含分包详细操作
文章目录 环境准备 1. node 环境准备 2.反编译工具 具体操作 1.微信PC获取小程序 2.解密包 3.反编译 现在网上也有很多关于小程序反编译的教程,随时间的流逝或许随着微信的更新,有出现编 ...
最新文章
- javascript里面RegExp的exec函数的总结
- Linux上vi的使用教程
- 周期信号的傅里叶变换(精彩)
- Leetcode 96. 不同的二叉搜索树 解题思路及C++实现
- python3输入密码显示*_python在控制台输入密码但是不显示
- CUMCM:05A长江水质综合评价与预测
- Form表单中的button导致页面刷新而无法进入Ajax请求回调函数
- 一个电脑同时运行 64bit 和 32bit 的eclipse 如何匹配 jdk环境
- 08年冬季足协代表VS三水喜健友谊赛
- Unable to instantiate SparkSession with Hive support because Hive classes are not found
- PYTHON1.day07
- [转载]提升进程权限-OpenProcessToken等函数的用法
- java .entryset_Java中map的entrySet()方法返回的是什么内容啊?有点晕
- MySql触发器讲解及使用案例
- 计算机中丢失jadec.dll,技能干货丨超实用,Jade各种安装问题完美解决方案!
- 如何获取最好权限删除顽固文件Mac系统
- 笔记本计算机的连接无线网络,笔记本电脑连接无线网络受限解决方法
- coverity java_coverityamp;fortify1--Poor Error Handling: Overly Broad Catch
- IPD数字诀(一二三四五六七八九十)
- CreateFont()函数的MSDN翻译