微信小程序分包流程

news/2024/12/4 5:48:58/

小程序目录结构

- app.js
- app.json
- app.wxss
- pages  // 主包所有页面- index  // 页面内容,包含(index.js,index.wxml,index.json,index.wxss)- logs
- packageA // 第一个分包- pages // 第一个分包的所有页面- index // 页面内容,包含(index.js,index.wxml,index.json,index.wxss)- logs
- packageB // 第二个分包- pages // 第二个分包的所有页面- apple // 页面内容,包含(apple.js,apple.wxml,apple.json,apple.wxss)- banana
- utils

配置方法

普通分包

找到app.json内容配置如下:

{"pages":[  // 主包所有页面"pages/index/index","pages/logs/logs"],"subPackages": [  // 通过subPackages节点,声明分包的结构{"root":"packageA", // 第一个分包根目录"name": "pack1", // 分包的别名"pages": [ // 当前分包下,所有页面的相对存放路径"pages/cat/cat","pages/dog/dog"]},{"root":"packageB", // 第二个分包根目录"name": "pack2", // 分包的别名"pages": [ // 当前分包下,所有页面的相对存放路径"pages/apple/apple","pages/banana/banana"]}]
}

保存app.json就会自动创建分包了,直接在相应页面写代码就好

例如我想去到packageB/pages/banana/banana这个页面,则直接跳转packageB/pages/banana/banana这个地址即可

独立分包

小程序从普通的分包页面启动时,需要首先下载主包
独立分包不依赖主包即可运行,可以很大程度上提升分包页面的启动速度

找到app.json内容配置如下:

{"pages":[  // 主包所有页面"pages/index/index","pages/logs/logs"],"subPackages": [  // 通过subPackages节点,声明分包的结构{"root":"packageA", // 第一个分包根目录"name": "pack1", // 分包的别名"pages": [ // 当前分包下,所有页面的相对存放路径"pages/cat/cat","pages/dog/dog"],"independent": true  // 加上这个属性为true就是独立分包},{"root":"packageB", // 第二个分包根目录"name": "pack2", // 分包的别名"pages": [ // 当前分包下,所有页面的相对存放路径"pages/apple/apple","pages/banana/banana"],"independent": true  // 加上这个属性为true就是独立分包}]
}

引用规则

独立分包和普通分包以及主包之间,是相互隔绝的,不能相互引用彼此的资源,例如:

  • 主包无法引用独立分包内的私有资源
  • 独立分包之间,不能相互引用私有资源
  • 独立分包和普通分包之间,不能相互引用私有资源
  • 特别注意:独立分包中不能引用主包内的公共资源

分包预下载

分包预下载指的是:在进入小程序的某个页面时,由框架自动预下载可能需要的分包,从而提升进入后续分包页面时的启动速度。

配置分包的预下载
预下载分包的行为,会在进入指定的页面时触发。在 app.json 中,使用 preloadRule 节点定义分包的预下载规则,示例代码如下:

{"pages":[  // 主包所有页面"pages/index/index","pages/logs/logs"],"preloadRule": {  // 分包预下载规则"pages/index/index":{ // 触发分包预下载的页面路径"network": "all", // 可选值为all(不限网络)和wifi(仅wifi模式下进行预下载),默认值为wifi"packages": ["pack1","packageB"] // 表示进入页面后预下载哪些分包,可以通过分包的root值或者name值指定预下载哪些分包}},"subPackages": [  // 通过subPackages节点,声明分包的结构{"root":"packageA", // 第一个分包根目录"name": "pack1", // 分包的别名"pages": [ // 当前分包下,所有页面的相对存放路径"pages/cat/cat","pages/dog/dog"]},{"root":"packageB", // 第二个分包根目录"name": "pack2", // 分包的别名"pages": [ // 当前分包下,所有页面的相对存放路径"pages/apple/apple","pages/banana/banana"]}]
}

同一个分包中的页面享有共同的预下载大小限额 2M

在这里插入图片描述


http://www.ppmy.cn/news/1552197.html

相关文章

南昌榉之乡托养机构解读:自闭症与看电视并无必然联系

在探讨自闭症的成因时,有人会问:自闭症是多看电视引起的吗?今天,就让我们来看看南昌榉之乡托养机构对此有何见解。 榉之乡大龄自闭症托养机构在江苏、广东、江西等地都有分校,一直致力于为大龄自闭症患者提供专业的支持…

Kylin Server V10 下 Kafka 集群部署

一、ZooKeeper 集群部署 1、主机规划 主机名 IP 地址 myid 10.8.3.35 1 10.8.3.36 2 10.8.3.37 3 2、拓扑结构 3、部署 (1) 下载Zookeeper [root@localhost ~]# cd /usr/local [root@localhost local]# wget https://www.apache.org/dyn/closer.lua/zookeeper/zookeeper-…

【FAQ】HarmonyOS SDK 闭源开放能力 —Push Kit(6)

1.问题描述: 推送通知到手机,怎么配置拉起应用指定的页面? 解决方案: 1、如果点击通知栏打开默认Ability的话, actionType可以设置为0, 同时可以在.clickAction.data中,指定待跳转的page页面…

React Native学习笔记(三)

一 组件简介 1.1 简介 RN中的核心组件,是对原生组件的封装 原生组件:Android或ios内的组件核心组件:RN中常用的,来自react-native的组件 原生组件 在 Android 开发中是使用 Kotlin 或 Java 来编写视图;在 iOS 开发…

操作系统内存分配管理相关习题3

虚拟内存 虚拟存储器基本概念 当作业要求的内存空间超过内存总容量时,无法装入内存运行; 有大量作业要求运行,但内存容量不足以容纳所有这些作业,只能将少量作业装入内存运行 解决内存容量不够问题的办法: • 从物理…

Nginx学习-安装以及基本的使用

一、背景 Nginx是一个很强大的高性能Web和反向代理服务,也是一种轻量级的Web服务器,可以作为独立的服务器部署网站,应用非常广泛,特别是现在前后端分离的情况下。而在开发过程中,我们常常需要在window系统下使用Nginx…

【开源】A059-基于SpringBoot的社区养老服务系统的设计与实现

🙊作者简介:在校研究生,拥有计算机专业的研究生开发团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看项目链接获取⬇️,记得注明来意哦~🌹 赠送计算机毕业设计600个选题ex…

echarts地图立体效果,echarts地图点击事件,echarts地图自定义自定义tooltip

一.地图立体效果 方法1:两层地图叠加 实现原理:geo数组中放入两个地图对象,通过修改zlevel属性以及top,left,right,bottom形成视觉差 配置项参考如下代码: geo: [{zlevel: 2,top: 96,map: map,itemStyle: {color: #091A51ee,opacity: 1,borderWidth: 2,borderColor: #16BAFA…