前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >uniapp分包

uniapp分包

作者头像
阿超
发布2022-08-17 21:15:52
1.6K0
发布2022-08-17 21:15:52
举报
文章被收录于专栏:快乐阿超快乐阿超

当众人都哭时,应该允许有的人不哭。当哭成为一种表演时,更应该允许有的人不哭。——莫言

我们在使用uniapp进行微信小程序开发时可能会遇到如下情况:

image-20211104160028042
image-20211104160028042

这是因为微信小程序官方文档提到:

某些情况下,开发者需要将小程序划分成不同的子包,在构建时打包成不同的分包,用户在使用时按需进行加载。 在构建小程序分包项目时,构建会输出一个或多个分包。每个使用分包小程序必定含有一个主包。所谓的主包,即放置默认启动页面/TabBar 页面,以及一些所有分包都需用到公共资源/JS 脚本;而分包则是根据开发者的配置进行划分。 在小程序启动时,默认会下载主包并启动主包内页面,当用户进入分包内某个页面时,客户端会把对应分包下载下来,下载完成后再进行展示。 目前小程序分包大小有以下限制:

  • 整个小程序所有分包大小不超过 20M
  • 单个分包/主包大小不能超过 2M

对小程序进行分包,可以优化小程序首次启动的下载时间,以及在多团队共同开发时可以更好的解耦协作。

此时可以进行简单的静态资源处理,将static目录下的图片之类的压缩或者放到在线图床上

如果在这样处理后还是提示超过2M

那么我们就进行分包

按照uniapp官方文档提到的,我们首先先将目录分出来:

例如我之前的pages.json为:

代码语言:javascript
复制
{
	"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
		{
			"path": "pages/index/index",
			"style": {
				"navigationBarTitleText": "uni-app"
			}
		},
		{
			"path": "pages/news/list",
			"style": {
				"navigationBarTitleText": "news-list",
				"enablePullDownRefresh": false
			}
		},
        {
			"path": "page/user/list",
			"style": {
				"navigationBarTitleText": "user-list",
				"enablePullDownRefresh": false
			}
		}
	],
	"globalStyle": {
		"navigationBarTextStyle": "black",
		"navigationBarTitleText": "uni-app",
		"navigationBarBackgroundColor": "#F8F8F8",
		"backgroundColor": "#F8F8F8"
	}
}

对应的目录为:

代码语言:javascript
复制
┌─pages               
│  ├─index
│  │  └─index.nvue    
│  ├─news
│  │  └─list.nvue
│  └─user
│     └─list.nvue
├─static
├─main.js
├─App.vue
├─manifest.json
└─pages.json

我们将其改为如下目录:

代码语言:javascript
复制
┌─pages               
│  ├─index
│     └─index.nvue    
├─pages-user
│     ├─static	
│     └─list.nvue 
├─pages-news  
│     ├─static
│     └─list.nvue 
├─static
├─main.js
├─App.vue
├─manifest.json
└─pages.json

这里pages-userpages-news就是我们的子包,我们将只有子包对应用到的静态文件放到子包的static

然后我们将pages.json改为:

代码语言:javascript
复制
{
	"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
		{
			"path": "pages/index/index",
			"style": {
				"navigationBarTitleText": "uni-app"
			}
		}

	],
	"subPackages": [{
		"root": "pages-user",
		"pages": [{
			"path": "list",
			"style": {
				"navigationBarTitleText": "user-list",
				"enablePullDownRefresh": false
			}

		}]
	}, {
		"root": "pages-news",
		"pages": [{
			"path": "list",
			"style": {
				"navigationBarTitleText": "news-list",
				"enablePullDownRefresh": false
			}

		}]
	}],
	"globalStyle": {
		"navigationBarTextStyle": "black",
		"navigationBarTitleText": "uni-app",
		"navigationBarBackgroundColor": "#F8F8F8",
		"backgroundColor": "#F8F8F8"
	}
}

主要就是将子包中的页面,放到了subPackages下对应的子包配置中,以及配置了根路径root,再修改具体的路径

改完后,在页面中写的navigator跳转路径也要进行相应的修改

例如我这里:

代码语言:javascript
复制
<navigator url="/pages-user/list">user-list</navigator>
<navigator url="/pages-news/list">news-list</navigator>

要注意,子包下的静态资源,在小程序上是不可共享的

image-20211104162009686
image-20211104162009686
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-11-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档