UniApp 分包异步化配置及组件引用解决方案

具体参考微信小程序文档基础能力 / 分包加载 / 分包异步化

一、分包页面组件配置

在 UniApp 的pages.json中,为分包页面(或主包如 tabbar 页面)配置异步组件时,需同时设置usingComponentscomponentPlaceholder

javascript 复制代码
{
  "path": "pages/smart/index",
  "style": {
    "navigationBarTitleText": "智能家居",
    "disableScroll": true,
    "backgroundColor": "#F9FAFB",
    "backgroundColorContent": "#F9FAFB",
    "backgroundColorTop": "#F9FAFB",
    "backgroundColorBottom": "#F9FAFB",
    // 声明需要引入的异步组件
    "usingComponents": {
      "smart-device-detail": "/pages/smart/sub/components/smartDeviceDetail",
      "normal-device-detail": "/pages/smart/sub/components/normalDeviceDetail"
    },
    // 组件未加载完成时的占位组件
    "componentPlaceholder": {
      "smart-device-detail": "view",
      "normal-device-detail": "view"
    }
  }
}

解决组件找不到的问题

直接上述配置可能导致 "组件找不到" 报错,原因是 UniApp 的摇树优化会过滤未在页面中显式引入的组件。

解决方案:在对应的分包页面内手动引入组件

二、跨分包 JS 代码引用

跨分包引用 JS 可直接使用微信小程序的语法,支持两种方式:

javascript 复制代码
// subPackageA/index.js
// 使用回调函数风格的调用
require('../subPackageB/utils.js', utils => {
  console.log(utils.whoami) // Wechat MiniProgram
}, ({mod, errMsg}) => {
  console.error(`path: ${mod}, ${errMsg}`)
})
// 或者使用 Promise 风格的调用
require.async('../commonPackage/index.js').then(pkg => {
  pkg.getPackageName() // 'common'
}).catch(({mod, errMsg}) => {
  console.error(`path: ${mod}, ${errMsg}`)
})
相关推荐
郑州光合科技余经理1 天前
可独立部署的Java同城O2O系统架构:技术落地
java·开发语言·前端·后端·小程序·系统架构·uni-app
雪芽蓝域zzs1 天前
uniapp 取消滚动条
uni-app
2401_865854881 天前
Uniapp和Flutter哪个更适合企业级开发?
flutter·uni-app
雪芽蓝域zzs1 天前
uniapp 省市区三级联动
前端·javascript·uni-app
总爱写点小BUG1 天前
UniApp 图标方案终极排坑:告别 FontClass,拥抱真 SVG 组件化
前端框架·uni-app
计算机毕设指导61 天前
基于微信小程序的智能停车场管理系统【源码文末联系】
java·spring boot·微信小程序·小程序·tomcat·maven·intellij-idea
2501_933907211 天前
如何选择西安优质小程序开发服务与本凡码农合作?
科技·微信小程序·小程序
Rysxt_2 天前
UniApp获取安卓系统权限教程
android·uni-app
咖啡の猫2 天前
微信小程序案例 - 自定义 tabBar
微信小程序·小程序·notepad++
咖啡の猫2 天前
微信小程序全局数据共享
微信小程序·小程序