[小程序开发] 分包加载

一、介绍

        分包加载是一种小程序的优化技术,将小程序不同功能的代码,分别打包成不同的子包,在构建时打包成不同的分包,用户在使用时按需进行加载,在构建小程序分包项目时,构建会输出一个或多个分包,每个使用分包小程序必定包含有一个主包。

  •         主包:包含默认启动页面/TabBar页面以及所有分包都需用到公共资源的包。
  •         分包:根据开发者的配置进行划分出来的子包。
  1. 整个小程序所有分包大小不超过20MB。
  2. 单个分包/主包大小不能超过2MB。

二、分包加载配置

        小程序进行分包加载,需要在app.json中,通过subPackages或者subpackages定义分包结构。

         分包结构三个常用字段:

        1、root:分包的根目录,该目录下的所有文件都会被打包成一个独立的包。(根目录配置不能./开头,也不能以/开头)

        2、name:分包的别名,用于在代码中引用该分包。

        3、pages:指定当前分包中包含哪些页面。

"subPackages": [{"root": "modules/goodModel","name": "goodModel","pages": ["pages/list/list","pages/detail/detail"]}]

三、打包原则

        1、tabBar页面必须在主包内。

        2、最外层的pages字段,属于主包的包含的页面。

        3、按subPackages配置路径进行打包,配置路径外的目录将打包到主包中。

        4、分包之间不能相互嵌套,subpackage的根目录不能是另一个subpackage内的子目录。

四、引用原则

        1、主包不可以引用分包的资源,但分包可以使用主包的公共资源。

        2、分包与分包之间资源无法相互引用,分包异步化时不受此条限制。

 五、独立分包

        能够独立于主包和其他分包运行的包。从独立分包中页面进入小程序时,不需要下载主包,当用户进入普通分包或主包内页面时,主包才会被下载。可以将功能相对独立的页面配置到独立分包中。

声明对应的独立分包,给subPackages定义的分包结构添加independent字段即可。

"subPackages": [{"root": "modules/marketModel","name": "marketModel","pages": ["pages/market/market"],"independent": true}]

注意事项:

1、独立分包中不能依赖主包和其他分包中的资源。

2、主包中的app.wxss对独立分包无效。

3、App只能在主包内定义,独立分包中不能定义App,会造成无法预期的行为。

 六、分包预下载

        访问小程序某个页面时,预先下载其他分包中的代码和资源,当用户需要访问分包中的页面时,已经预先下载的代码和资源,因此可以直接使用。

分包预下载需要在app.json中通过preloadRule字段设置预下载规则。

  •  主包预下载分包
 "preloadRule":{"pages/index/index":{"network": "all","packages": ["goodModel"]}}

 "pages/index/index":访问该页面时,进行预下载。

 "packages": ["goodModel"]:预下载页面别名(也可以是路径)。

预下载成功时,控制台显示 

 

  • 独立分包预下载主包 
 "preloadRule":{"modules/marketModel/pages/market/market":{"network": "all","packages": ["__APP__"]}}

"__APP__":主包关键字。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/763938.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

突破编程_C++_C++11新特性(type_traits的复合类型特性以及关系类型特性)

1 type_traits 复合类型特性 1.1 std::is_function std::is_function 是一个模板类&#xff0c;用于检查一个类型是否为函数类型。 定义&#xff1a; template< class T > struct is_function;当 T 为函数类型则为 true&#xff0c;否则为 false。 样例&#xff1…

专业前沿问题问答合集10-2——比特币的加密原理

专业前沿问题问答合集10-2——比特币的加密原理 比特币的加密原理 比特币作为一种加密货币,其安全性和功能性主要基于密码学原理和区块链技术。以下是比特币加密原理的关键组成部分: 1. 非对称加密(公钥和私钥) 比特币使用非对称加密技术来确保交易的安全性。每个比特币…

Docker 浅谈重要的概念和应用场景

文章目录 一、重要的概念二、特性三、特性的常见应用场景四、基本使用流程 一、重要的概念 镜像&#xff08;Image&#xff09;&#xff1a;镜像是Docker的基本构建块&#xff0c;它是一个只读的文件&#xff0c;包含了运行应用程序所需的所有文件系统、库和依赖项。可以将镜像…

1065:奇数求和

【题目描述】 计算非负整数m到n(包括m和n)之间的所有奇数的和&#xff0c;其中&#xff0c;m 不大于 n&#xff0c;且n 不大于300。例如 m3,n12 其和则为&#xff1a;35791135。 【输入】 两个数 m 和n &#xff0c;两个数以一个空格分开&#xff0c;其中 0≤m≤n≤300 。 …

设计模式: 外观模式

文章目录 一、什么是外观模式二、外观模式结构1、外观模式的主要角色包括&#xff1a;2、外观模式通常适用于以下情况&#xff1a; 三、优点 一、什么是外观模式 外观模式&#xff08;Facade Pattern&#xff09;是一种结构型设计模式&#xff0c;它提供了一个统一的接口&…

洛谷入门——P1567 统计天数

统计天数 题目描述 炎热的夏日&#xff0c;KC 非常的不爽。他宁可忍受北极的寒冷&#xff0c;也不愿忍受厦门的夏天。最近&#xff0c;他开始研究天气的变化。他希望用研究的结果预测未来的天气。 经历千辛万苦&#xff0c;他收集了连续 N ( 1 ≤ N ≤ 1 0 6 ) N(1 \leq N …

Java中Random

import java.util.Random;public class RandomExample {public static void main(String[] args) {Random random new Random();// 生成一个随机整数int randomNumber random.nextInt();System.out.println("Random number: " randomNumber);// 生成一个指定范围内…

python的stone音乐播放器的设计与实现flask-django-php-nodejs

该系统利用python语言、MySQL数据库&#xff0c;flask框架&#xff0c;结合目前流行的 B/S架构&#xff0c;将stone音乐播放器的各个方面都集中到数据库中&#xff0c;以便于用户的需要。该系统在确保系统稳定的前提下&#xff0c;能够实现多功能模块的设计和应用。该系统由管理…

Docker搭建mysql8的主从复制

Docker 通过Docker部署Mysql主从复制&#xff0c;Docker安装在前篇有&#xff0c;直接演示&#xff1a; 拉取镜像 # 获取有哪些镜像 docker search mysql# 拉取MySQL镜像 docker pull mysql:8.0.32# 查看镜像 docker images主节点的配置 创建数据存储目录 mkdir -p /docke…

python_BeautifulSoup爬取汽车评论数据

爬取的网站&#xff1a; 完整代码在文章末尾 https://koubei.16888.com/57233/0-0-0-2 使用方法&#xff1a; from bs4 import BeautifulSoup 拿到html后使用find_all()拿到文本数据&#xff0c;下图可见&#xff0c;数据标签为&#xff1a; content_text soup.find_all…

蓝桥杯/减肥/c\c++

问题描述 小明是一个大胖子&#xff0c;为了让体重达到正常水平&#xff0c;他的计划是&#xff1a;减掉n千克体重&#xff0c;分多周完成&#xff08;至少是2周&#xff09;&#xff0c;每周都减重正整数千克。为了激励自己&#xff0c;他决定每周减掉的体重都必须比上周减掉的…

006——GenericTimer(基于liteos-a)

目录 Generic Timer介绍 1.1 硬件结构 1.1.1 System Counter特性 1. 两种访问方式 2. CP15寄存器 3. MemoryMapped寄存器 1.1.2 Timer特性 1.2 SystemCounter时钟源 1.3 使用方法 GenericTimer源码分析 1.2 源码分析 1.2.1 初始化 1.2.2 启动Timer 1.2.3 中断处理…

SQPSK

文章目录 [1]张显辉,沈国松.SQPSK调制体制在跟踪与数据中继卫星中的应用[J].遥测遥控,2007(S1):26-29.[2]保骏.QPSK、SQPSK信号解调相位模糊及其对Viterbi译码的影响[J].四川兵工学报,2011,32(03):53-55.[3]赵辉,严晓芳,张玉. 星载SQPSK高速调制系统的设计[C]//中国通信学会.20…

内网穿透方案

内网穿透 有几种流行的内网穿透软件可供选择&#xff0c;它们都能帮助你在内网环境中建立与外部网络的连接。以下是其中一些常用的内网穿透软件&#xff1a; Ngrok&#xff1a;Ngrok 是一个简单易用的内网穿透工具&#xff0c;可以快速创建安全的公共 URL&#xff0c;让你可以…

在服务器上训练faster-rcnn模型(pycharm和Termius)

本文主要介绍使用服务器训练模型的两种方式&#xff1a;pycharm&#xff08;可视化界面友好&#xff09;and终端&#xff0c;本人用的是macos系统&#xff0c;可能pycharm某些入口的位置不一样&#xff0c;本教程代码以faster-rcnn为例 准备工作&#xff1a; 1.知道自己所用服…

力扣-字符串的最长公共前缀

1 采用纵向比较的方法&#xff0c;即以这个字符串数组的第一个字符串作为参照对象&#xff0c;纵向就是同时比较每个字符串的同样位置上的元素是否相同&#xff0c;所以外部循环负责控制走到哪个位置了&#xff0c;内部循环就把后面要比较的每个字符串的当前位置上的元素拿出来…

LeetCode 300. 最长递增子序列 题解(C,C++) (包含动态规划与贪心的区别的资料)

题目链接&#xff1a; - 力扣&#xff08;LeetCode&#xff09; 资源&#xff1a; 关于动态规划和贪心算法的区别&#xff0c;动态规划的常见题型&#xff0c;我总结了一些&#xff08;还有文档哦&#xff0c;持续更新&#xff0c;以后有扩充&#xff09;&#xff0c;大家可移…

外卖店优先级c++

题目 输入样例&#xff1a; 2 6 6 1 1 5 2 3 1 6 2 2 1 6 2输出样例&#xff1a; 1样例解释 6时刻时&#xff0c;1 号店优先级降到 3&#xff0c;被移除出优先缓存&#xff1b;2 号店优先级升到 6&#xff0c;加入优先缓存。 所以是有 1 家店 (2 号) 在优先缓存中。 思路 …

docker 安装部署 jenkins

今天 小☀ 给大家普及一下什么是 jenkins&#xff01;&#xff01; Jenkins是一个开源软件项目&#xff0c;基于Java开发的持续集成工具。它提供了一个开放易用的软件平台&#xff0c;使软件项目可以进行持续集成。Jenkins起源于Hudson&#xff0c;主要用于持续、自动地构建、…

C语言 自定义类型:结构体

目录 前言 一、结构体类型 1.1 结构体的声明 1.2 结构体变量的创建和初始化 1.3 结构体的特殊声明 1.4 结构体的自引用 二、结构体的对齐 2.1 对齐规则 2.2 内存对齐的原因 2.3 修改默认对齐数 2.4 结构体传参 三、结构体实现位段 3.1 位段的内存分配 3.2 段的跨平…