当前位置: 首页 > news >正文

小程序分包和预加载

一、目的

分包的目的:

提升小程序的首屏加载速度,其原理和PC端网页的路由懒加载非常类似。即当我们第一个打开一个小程序的时候,只加载主包以及一些公共的资源,当调到某个页面的时候,在加载该页面所在的分包,目前微信小程序,总包大小不操作20M,分包的各种不超过10个,每个大小不超过2M。

预加载:预先加载的意思,进一步提示小程序的渲染速度。

二、分包

uniapp 实现分包:

1、在manifest.json文件中开启分包模式
/* 小程序特有相关 */"mp-weixin": {"optimization": {"subPackages": true}},
2、针对每个分包建立独立的文件夹,文件夹里面一般包含 pages/static 两个文件夹,分别用于存放当前分包的页面和静态资源(图片)

3、在pages.json中声明分包的结构
//声明分包结构"subPackages": [//数组中的一个对象就对应着一个分包{"root": "goods-package",//分包的文件夹的名称//该分包中的页面路径"pages": [{"needLogin": false,"path": "pages/goodDetail/goodDetail"}]},],

在微信开发者工具中可以看到分包的结构


原生小程序分包:

1、配置 app.json 文件
{"pages": [// 主包里面的页面路径配置"pages/tabBar/index/index","pages/login/adminLogin/login",...],"subpackages": [// 分包的配置{"root": "plateMake",  // 分包包名"name": "车牌预约","pages": [// 分包的页面配置"views/index/index",...]},... // 其他分包配置]// 省略其他...
} 

写完分包之后,如果对应的文件夹和页面不存在,它会自动创建文件夹和页面

其他设置及页面同 uniapp 的一样 

三、预加载

uniapp:

在pages.json中配置

"preloadRule":{//key(在哪个页面中需要做分包的预加载):value(预加载的一些配置)"pages/category/category":{"network": "all","packages": ["goods-package"]//需要预加载的分包}
},

原生开发:

在 app.json 增加 preloadRule 配置来控制。

{"pages": ["pages/tabBar/index/index",...],"subpackages": [{"root": "plateMake","name": "车牌预约","pages": ["views/index/index",...]},{"root": "indep","pages": ["index"],"independent": true}],"preloadRule": {"pages/tabBar/index/index": {"network": "all","packages": ["important"]},"indep/index": {"packages": ["__APP__"]}}
}

preloadRule 中,key 是页面路径,value 是进入此页面的预下载配置,每个配置有以下几项:

字段类型必填默认值说明
packagesStringArray进入页面后预下载分包的 root 或 name__APP__ 表示主包。
networkStringwifi在指定网络下预下载,可选值为:
all: 不限网络
wifi: 仅wifi下预下载

限制

同一个分包中的页面享有共同的预下载大小限额 2M,限额会在工具中打包时校验。

如,页面 A 和 B 都在同一个分包中,A 中预下载总大小 0.5M 的分包,B中最多只能预下载总大小 1.5M 的分包。

http://www.lryc.cn/news/465320.html

相关文章:

  • 【MATLAB 串口调试+虚拟串口测试】
  • mac 安装最新版nginx
  • 极氪汽车困局:营销频繁车、产品力不足
  • Icecream 与 Python 日志库及性能分析整合指南
  • 请解读下面的程序:pat =re.compile(r‘\d+‘)res = pat.search(‘www.ddd996.com‘)res.group()
  • Fibonacci任意一位的值得算法
  • gbn,sr和tcp的区别
  • FastGPT本地开发 之 通过Navicat管理MongoDB、PostgreSQL数据库
  • hardhat部署智能合约
  • 界面控件DevExtreme中文教程 - 如何与Amazon S3和Azure Blob存储集成?
  • 【ERROR】ubuntu source: not found
  • 聚焦IOC容器刷新环节postProcessBeanFactory(BeanFactory后置处理)专项
  • 配置nginx服务通过ip访问多网站
  • 银河麒麟V10设置QT开发程序开机自启动
  • RabbitMQ高级特性详解
  • 提升泛化能力的前沿方法:多任务学习在机器学习中的应用与实践
  • 【小白学机器学习16】 概率论的世界观2
  • 洛谷 P9868 [NOIP2023] 词典
  • 跨浏览器免费书签管理系统
  • 导出Excel的常用方法:从前端到后端的全面指南
  • uni-app中添加自定义相机(微信小程序+app)
  • Android中的SSL/TLS加密及其作用
  • 东芝TLP176AM光耦合器:提升设计性能的关键元件
  • MySQL数据库:基础介绍下载与安装
  • 原理代码解读:基于DiT结构视频生成模型的ControlNet
  • 【Pip】初识 Pip:Python 包管理的基本命令详解
  • JMeter 中两大高级线程组的区别与应用
  • 深入理解伪元素与伪类元素
  • HDU Romantic
  • [每日一练]通过shift移动函数实现连续数据的需求