uniapp分包(小程序分包)处理图文详解

 更新时间:2023年01月15日 11:06:05   作者:佐武  
小程序上传的时候,主包不能超过2M,如果超出,则会上传失败,这时候就需要把界面进行分包,下面这篇文章主要给大家介绍了关于uniapp分包(小程序分包)处理的相关资料,需要的朋友可以参考下

一、为什么要分包

因小程序有体积和资源加载限制,优化小程序的下载和启动速度。

二、主包和分包

所谓的主包,即放置默认启动页面/TabBar 页面,以及一些所有分包都需用到公共资源/JS 脚本;而分包则是根据pages.json的配置进行划分。

在小程序启动时,默认会下载主包并启动主包内页面,当用户进入分包内某个页面时,会把对应分包自动下载下来,下载完成后再进行展示。此时终端界面会有等待提示。

App默认为整包。从uni-app 2.7.12+ 开始,也兼容了小程序的分包配置。其目的不用于下载提速,而用于首页是vue时的启动提速。App下开启分包,除在pages.json中配置分包规则外,还需要在manifest中设置在app端开启分包设置,详见:uni-app官网

目前小程序分包大小有以下限制:

  • 微信小程序每个分包的大小是2M,总体积一共不能超过20M。
  • 百度小程序每个分包的大小是2M,总体积一共不能超过8M。
  • 支付宝小程序每个分包的大小是2M,总体积一共不能超过8M。
  • QQ小程序每个分包的大小是2M,总体积一共不能超过24M。
  • 字节小程序每个分包的大小是2M,总体积一共不能超过16M(字节小程序基础库 1.88.0 及以上版本开始支持,字节小程序开发者工具请使用大于等于 2.0.6 且小于 3.0.0 的版本)

三、原始配置

首先我们来看一下正常的配置和目录,当前添加了tabBar表现,这里我们只添加了四个

当前还没有配置分包的pages.json文件

{
	"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
		{
			"path": "pages/index/index",	//配置页面路径
			"style": {
				"navigationBarTitleText": "首页",	//导航栏标题文字内容
				"enablePullDownRefresh": false	//是否开启下拉刷新: 默认为false
			}
		}, 
		{
			"path": "pages/car/car",
			"style": {
				"navigationBarTitleText": "订单",
				"enablePullDownRefresh": false
			}
		}, 
		{
			"path": "pages/mine/mine",
			"style": {
				"navigationBarTitleText": "我的",
				"enablePullDownRefresh": false
			}
		}, 
		{
			"path": "pages/order/order",
			"style": {
				"navigationBarTitleText": "购物车",
				"enablePullDownRefresh": false
			}
		}
	],
	"tabBar":{	//设置底部 tab 的表现
		"color": "#909399",		//tab 上的文字默认颜色
		"selectedColor": "#303133",		//tab 上的文字选中时的颜色
		"backgroundColor": "#e5e5e5",	//tab 的背景色
		"borderStyle":"white",		//tabbar 上边框的颜色,可选值 black/white,也支持其他颜色值
		"list": [	//tab 的列表,详见 list 属性说明,最少2个、最多5个 tab
			{
				"pagePath": "pages/index/index",	//页面路径,必须在 pages 中先定义
				"iconPath": "static/tabBar/home.png",	//图片路径
				"selectedIconPath": "static/tabBar/home-active.png",	//选中时的图片路径
				"text": "首页"		//tab 上按钮文字,在 App 和 H5 平台为非必填。例如中间可放一个没有文字的+号图标
			},
			{
				"pagePath": "pages/car/car",
				"iconPath": "static/tabBar/circle.png",
				"selectedIconPath": "static/tabBar/circle-active.png",
				"text": "订单"
			},
			{
				"pagePath": "pages/order/order",
				"iconPath": "static/tabBar/order.png",
				"selectedIconPath": "static/tabBar/order-active.png",
				"text": "购物车"
			},
			{
				"pagePath": "pages/mine/mine",
				"iconPath": "static/tabBar/mine.png",
				"selectedIconPath": "static/tabBar/mine-active.png",
				"text": "我的"
			}
		]
	},
	"globalStyle": {
		"navigationBarTextStyle": "black",
		"navigationBarTitleText": "小小商城",
		"navigationBarBackgroundColor": "#F8F8F8",
		"backgroundColor": "#F8F8F8"
	},
	"uniIdRouter": {}
}

四、分包配置步骤

1.在page文件夹下创建一个subPack(不限制文件夹名称)文件夹,在subPack文件夹下创建tab文件和list文件

2.pages.json文件配置以下配置

{
    //分包加载配置,此配置为小程序的分包加载机制。
	"subPackages": [{
		"root": "pages/subPack", //子包的根目录
		"pages": [{ //这里的配置路径和pages里的一样
				"path": "list", //配置页面路径,这里要注意,因为root已经选中了文件夹,所以我们只要填写文件名就好
				"style": {
					"navigationBarTitleText": "",
					"enablePullDownRefresh": false
				}
			},
			{
				"path": "tab",
				"style": {
					"navigationBarTitleText": "",
					"enablePullDownRefresh": false
				}
			}
		]
	}]
}

 这样我们分包就配置好了但是如果我们想进一步提升分包的启动速度的话需要做分包预加载处理

{
	// 分包预载配置
	"preloadRule": {
		// 当我们进入了pages/index/index页面以后就会预下载pages/subPack分包
		"pages/index/index": {
			"network": "all",	//在指定网络下预下载,可选值为:all(不限网络)、wifi(仅wifi下预下载)
			"packages": ["pages/subPack"]	//进入页面后预下载分包
		}
	}
}

这样我们分包就配置好了

总结

到此这篇关于uniapp分包(小程序分包)处理的文章就介绍到这了,更多相关uniapp分包 小程序分包内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • js获取数组的最后一个元素

    js获取数组的最后一个元素

    这篇文章主要介绍了javascript获取数组的最后一个元素,需要的朋友可以参考下
    2015-04-04
  • RequireJS用法简单示例

    RequireJS用法简单示例

    这篇文章主要介绍了RequireJS用法,结合简单实例形式分析了RequireJS项目文件结构、相关操作技巧与注意事项,需要的朋友可以参考下
    2018-08-08
  • JS跨域代码片段

    JS跨域代码片段

    js跨域我用的比较多的就是jsonp和程序代理。但是jsonp只能用get,而且是js异步调用,有时候不能满足项目要求
    2012-08-08
  • 深入解析JavaScript中的变量作用域

    深入解析JavaScript中的变量作用域

    这篇文章主要是对JavaScript中的变量作用域进行了详细的分析介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2013-12-12
  • Javascript表单验证要注意的事项

    Javascript表单验证要注意的事项

    JavaScript 可用来在数据被送往服务器前对 HTML 表单中的这些输入数据进行验证。被 JavaScript 验证的这些典型的表单数据有:用户是否已填写表单中的必填项目?用户输入的邮件地址是否合法?用户是否已输入合法的日期?用户是否在数据域 (numeric field) 中输入了文本?
    2014-09-09
  • Three.js+React制作3D梦中海岛效果

    Three.js+React制作3D梦中海岛效果

    深居内陆的人们,大概每个人都有过大海之梦吧。本文使用React+Three.js技术栈,实现3D海洋和岛屿,感兴趣的小伙伴可以跟随小编一起学习一下
    2022-05-05
  • 使用typescript类型来实现快排详情

    使用typescript类型来实现快排详情

    这篇文章主要介绍了使用typescript类型来实现快排详情,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • three.js利用射线Raycaster进行碰撞检测

    three.js利用射线Raycaster进行碰撞检测

    这篇文章主要为大家详细介绍了three.js利用射线Raycaster进行碰撞检测,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • js 弹出新页面避免被浏览器、ad拦截的一种新方法

    js 弹出新页面避免被浏览器、ad拦截的一种新方法

    本文为大家介绍了使用js弹出新页面同时避免被浏览器、ad拦截等,具体的实现方法如下,大家不妨参考参考
    2014-04-04
  • Js 中debug方式

    Js 中debug方式

    以前在VS2005中以为要断点debug js 要 用 debug模式并且在相应的js中设置断点 才可以debug,今天学了一招,可以在要调试的js前加一句js命令debugger;
    2010-02-02

最新评论