当前位置:首页 > uni-app

uniapp 组件分包

2026-03-05 09:02:02uni-app

分包的概念

在UniApp中,分包(SubPackage)是一种优化手段,将应用拆分成多个子包,按需加载。主包包含核心资源和启动页面,子包存放非核心页面或功能模块,减少首屏加载时间。

分包配置方法

1. 修改 manifest.json
确保启用分包功能,在 manifest.jsonmp-weixin 或其他平台配置中添加以下字段:

"optimization": {
  "subPackages": true
}

2. 配置 pages.json
pages.json 中通过 subPackages 字段定义分包结构:

{
  "pages": [...], // 主包页面
  "subPackages": [
    {
      "root": "subpackageA",
      "pages": [
        {"path": "page1", "style": {...}},
        {"path": "page2", "style": {...}}
      ]
    },
    {
      "root": "subpackageB",
      "pages": [...]
    }
  ]
}
  • root:分包根目录(需与项目目录一致)。
  • pages:分包内的页面路径(相对 root 的路径)。

分包加载规则

  • 主包:必须包含 pages.json 中未声明在 subPackages 的页面、tabBar 页面及公共依赖。
  • 子包:独立编译,访问子包页面时动态加载。

分包预下载

pages.json 中通过 preloadRule 配置预下载:

"preloadRule": {
  "pages/index/index": {
    "network": "all",
    "packages": ["subpackageA"]
  }
}
  • 当访问 pages/index/index 时,自动预下载 subpackageA

注意事项

  • 路径规范:分包路径不能与主包或其他分包重复。
  • 依赖隔离:子包应尽量减少对主包的依赖,避免公共资源重复打包。
  • 体积限制(微信小程序):
    • 主包 ≤ 2MB,所有分包 ≤ 8MB,单个分包 ≤ 2MB。

动态引入组件

若需在分包中使用组件,可通过 require 动态引入:

const component = require('@/subpackageA/components/example.vue');

或使用 easycom 自动引入(需在 pages.json 配置):

"easycom": {
  "autoscan": true,
  "custom": {
    "^uni-(.*)": "@/subpackageA/components/uni-$1.vue"
  }
}

uniapp 组件分包

标签: 组件uniapp
分享给朋友:

相关文章

vue实现广告组件

vue实现广告组件

Vue 实现广告组件的核心方法 数据驱动的广告内容渲染 通过 props 接收广告数据(如图片URL、跳转链接等),使用 v-bind 动态绑定属性。典型结构包含 <a> 标签嵌套 <…

vue实现穿梭框树组件

vue实现穿梭框树组件

Vue 穿梭框树组件实现 穿梭框树组件通常结合了树形结构和穿梭框功能,允许用户在左右两栏之间移动树节点数据。以下是基于 Vue 的实现方案: 核心功能设计 数据结构 树形数据通常采用嵌套结构,例如…

uniapp删除

uniapp删除

卸载 uniapp 项目依赖 在项目根目录下执行以下命令,移除 node_modules 和依赖锁文件: rm -rf node_modules package-lock.json 如需清理全…

uniapp应用市场

uniapp应用市场

uniapp应用市场概述 Uniapp作为跨平台开发框架,支持将代码编译到iOS、Android、Web及各类小程序平台。其应用市场(插件市场)是开发者获取扩展插件、模板、组件的重要资源库,涵盖UI组…

uniapp部署到服务器

uniapp部署到服务器

部署准备 确保本地开发环境已完成项目构建,生成静态文件(H5端为/dist/build/h5目录)。检查服务器环境是否安装Nginx/Apache等Web服务软件,并配置好域名解析。 上传文件 通过…

uniapp视频

uniapp视频

uniapp视频开发基础 uniapp支持通过video组件实现视频播放功能,该组件兼容多端(H5、小程序、App等),基本用法如下: <template> <video…