31.1 常规分包


如果说 我们写的小程序 整体 大于了 2M 怎么办呢?可以说这个情况 在如今小程序 日益壮大 、火热 下,是很容易出现的。一个好的小程序 必定会很大。功能多,界面多,无论你怎么 做优化 和压缩 其实 都会 超过 2M。

答:分包机制。小程序官方 提供了这样的 一个机制。可以把整个小程序 进行 分包。单个 分包/主包 不能超过 2MB 大小!所有分包 加在一起的大小 不超过 16MB。

注意

  • 加载小程序的时候 还是 先加载主包,当需要访问分包的页面时,才会加载分包的内容。
  • 分包的页面可以访问主包的文件、数据、图片 等资源
  • 除了分包以外的内容都会被打包到主包中去。主包通常会打包一些 tarBar 页面。
  • 除了 tarBar 页面,在开始时 不需要加载的 页面 其实都应该 想办法 将其分包。
  1. 直接新建 分包目录,然后 把 对应的 页面 放到 目录下。

  1. 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"]}]
}
  1. 去更改相关的代码



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 分包机制相关推荐

  1. hbuilderx 小程序分包_基于uniapp的微信小程序之分包

    0. 缘由 最近工作在接触uni-app,用它来开发微信小程序,也是第一次接触,找了很久,还有大佬用自己写的函数做的,俺觉得我不会也不配,刚好看到下面评论是官方也支持了,所以就用官方的了,这里记录一下 ...

  2. 微信小程序的分包功能

    微信小程序的分包 做小程序开发的人都知道,微信小程序上传包的大小最大为2M,,超过之后就无法上传,那么我们如何解决较大的项目呢,那么就要采用分包配置了,下面是分包的一些说明: 微信小程序每个分包的大小 ...

  3. uniapp开发微信小程序设置分包,简单易学(图解)

    我们使用uniapp开发微信小程序的时候,当我们的包体积过大的时候,无法真机模拟 因为小程序单个包只支持2MB,所以这时候我们要选择去分包. 有人要问了分包难吗?分包很简单.但是 最重要的来了,分包这 ...

  4. 微信小程序之分包加载,解决代码超过2M的方法

    2017.01.09 小程序上线时,微信限制了代码包不能超过1MB 大小,(现在是2M了)限制大小是出于对小程序启动速度的考虑,希望用户在使用任何一款小程序时,都能获得一种"秒开" ...

  5. HbuilderX微信小程序uniapp分包小白教程趟坑【伸手党福利】【干货】

    本教程为小白教程,主管操作,具体原理讲解欢迎评论区补充. 微信小程序分包原因: 1.多人开发 2.引入了大型js 3.单项目多模块需要分包 官方资料: https://developers.weixi ...

  6. 微信小程序登陆验证机制理解及实现

    椰汁笔记,欢迎指正 微信小程序的登录(python flask实现后端),实现的核心是 让服务器得到用户的openid. 服务器生成sessionId发送给客户端,sessionId即是客户端和服务器 ...

  7. 微信小程序的分包加载

    文章目录 前情提要 小程序的包结构 app.json声明包结构 独立分包 声明独立分包 分包预下载 声明分包预下载 搭建静态资源服务器 小程序项目 app.json 主包 app.wxss app.j ...

  8. 微信小程序_23,分包

    什么是分包: 分包指的是把一个完整的小程序项目,按照需求划分为不同的子包,在构建时,打包成不同的分包,用户在使用时按需进行加载 分包的好处: 可以优化小程序首次启动的下载时间 在多团队共同开发时可以更 ...

  9. Windows电脑反编译微信小程序含分包详细操作

    文章目录 环境准备 1. node 环境准备 2.反编译工具 具体操作 1.微信PC获取小程序 2.解密包 3.反编译 现在网上也有很多关于小程序反编译的教程,随时间的流逝或许随着微信的更新,有出现编 ...

最新文章

  1. javascript里面RegExp的exec函数的总结
  2. Linux上vi的使用教程
  3. 周期信号的傅里叶变换(精彩)
  4. Leetcode 96. 不同的二叉搜索树 解题思路及C++实现
  5. python3输入密码显示*_python在控制台输入密码但是不显示
  6. CUMCM:05A长江水质综合评价与预测
  7. Form表单中的button导致页面刷新而无法进入Ajax请求回调函数
  8. 一个电脑同时运行 64bit 和 32bit 的eclipse 如何匹配 jdk环境
  9. 08年冬季足协代表VS三水喜健友谊赛
  10. Unable to instantiate SparkSession with Hive support because Hive classes are not found
  11. PYTHON1.day07
  12. [转载]提升进程权限-OpenProcessToken等函数的用法
  13. java .entryset_Java中map的entrySet()方法返回的是什么内容啊?有点晕
  14. MySql触发器讲解及使用案例
  15. 计算机中丢失jadec.dll,技能干货丨超实用,Jade各种安装问题完美解决方案!
  16. 如何获取最好权限删除顽固文件Mac系统
  17. 笔记本计算机的连接无线网络,笔记本电脑连接无线网络受限解决方法
  18. coverity java_coverityamp;fortify1--Poor Error Handling: Overly Broad Catch
  19. IPD数字诀(一二三四五六七八九十)
  20. CreateFont()函数的MSDN翻译

热门文章

  1. Python房价分析和可视化<房天下二手房>
  2. Google 今天的logo效果
  3. 杀毒软件使用技巧【精华】
  4. 真流弊,基于Spring Boot的迷你天猫商城
  5. 使用计算机是怎样绝对引用,办公小技巧:Excel引用相对还是绝对
  6. Jmeter接口实例:带token
  7. 光大银行外包软件测试,文思海辉蝉联光大银行人力外包测试领域优秀服务商
  8. cf-366C-Dima and Salad
  9. 16 个新鲜的 CSS3 在线教程
  10. 广积粮筑高墙缓称王(转载)