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

微信小程序分包异步化

分包1引入分包2的组件或者js

引入组件:

主包里的pages/tabbars/tabbar1/tabbar1页面 引入分包sub1的sub1/components/sub1-component/sub1-component组件

1、分包预下载 首先在app.js定义preloadRule

"preloadRule": {
    "pages/tabbars/tabbar1/tabbar1": {
      "network": "all",
      "packages": ["sub1"]
    }
  },

就是说进入到pages/tabbars/tabbar1/tabbar1页面的时候 会去下载sub1分包

2、引入分包组件

"usingComponents": {
    "sub1-component": "../../../sub1/components/sub1-component/sub1-component"
  },
  "componentPlaceholder": {
    "sub1-component": "view"
  }

componentPlaceholder是用来定义下载为完成的时候显示的占位组件,就是说sub1-component未下载渲染完成时 页面显示的是view元素,也可以换成别的组件。

3、使用

直接在tabbar1 wxml里 使用<sub1-component></sub1-component>就可以了

我在sub1-component里就写了展示sub1-component文字

<view style="margin-top: 100rpx;" bind:tap="onClick">sub1-component</view>

所以展示出来就是这样的

第二个是引入分包的js

例如:在主包的tabbar1引入分包sub2里的utils.js

在分包sub2写了个utils.js 导出了一个deepCopy的方法

在tabbar1页面的js里这样写

// 加载分包的js
  loadSubPackage() {
    try {
      require('../../../sub1/utils.js', mode => {
        console.log('@@sub1-com success', mode)
      }, (err) => {
        console.log('@@sub1-com err', err)
      })
    } catch (error) {
      console.log('@@分包异步化加载失败', error)
    }
  },

就能得到分包里的方法了

可以把这些方法 放到全局wx里,这样其他分包不用引入也可以直接使用了

// 加载分包的js
  loadSubPackage() {
    try {
      require('../../../sub1/utils.js', mode => {
        console.log('@@sub1-com success', mode)
        // 将方法写入全局里 这样其他分包也可以直接使用 而不用再引一遍
        const prefix = 'sub1_utils_'
        for(const [k,v] of Object.entries(mode)) {
          wx[prefix + k] = v
        }
        console.log('@@写入全局wx里的方法', wx.sub1_utils_deepCopy)
      }, (err) => {
        console.log('@@sub1-com err', err)
      })
    } catch (error) {
      console.log('@@分包异步化加载失败', error)
    }
 }

可以看到打印里成功写入了


http://www.kler.cn/a/540380.html

相关文章:

  • 点大商城V2-2.6.6源码全开源uniapp +搭建教程
  • 机器学习笔记
  • Bash (Bourne-Again Shell)、Zsh (Z Shell)
  • JS对象拷贝的几种实现方法以及如何深拷贝(面试题)
  • IDEA+DeepSeek让Java开发起飞
  • Android Studio超级详细讲解下载、安装配置教程(建议收藏)
  • 【时时三省】(C语言基础)基础习题1
  • Open Liberty使用指南及开发示例(二)
  • C++基础知识学习记录—补充
  • 2.10作业
  • 说一下 Tcp 粘包是怎么产生的?
  • ElasticSearch进阶
  • 服务器使用宝塔面板Docker应用快速部署 DeepSeek-R1模型,实现Open WebUI访问使用
  • Godot开发框架探索#2
  • 线程状态示意图
  • ElasticSearch 分页技术详解:实现方式与最佳实践
  • python之keyring库:安全密码管理库,不同平台service_name、username的获取
  • DeepSeek从入门分析总结
  • 【Golang学习之旅】gRPC 与 REST API 的对比及应用
  • kafka topic是什么?partition是什么? broker是什么?
  • 如何使用DeepSeek帮助自己的工作?
  • Vue.js 状态管理库Pinia
  • 关于SoC产品介绍:ICNM8501
  • Day82:创建图形界面(GUI)
  • IntelliJ IDEA使用经验(十三):使用Git克隆github的开源项目
  • 【Matlab优化算法-第14期】基于智能优化算法的VMD信号去噪项目实践