小程序:使用分包异步化解决一个分包引入另一个分包的组件/函数的问题

news2024/11/15 4:30:55

背景

我们一般使用小程序插件的时候,喜欢将其放在分包中,因为插件体积会打包进主包内,很容易造成主包体积超过 2M 从而无法发布,我们暂且叫这个有插件的分包叫分包P,这时候另外两个业务分包XY,想引入这个分包P里的插件(插件里包含了几个组件和一些接口函数)。

方案一:因为分包里本身就是可以引入插件的,所以想直接在分包XY里面分别引入插件,但是同一个插件是不能在一个项目里多次引用的,所以这个方案不行。
方案二:把插件放在主包里,这样虽然可以实现,但是插件大小会打包进主包,容易超过 2M 无法发布
方案三:分包异步化,将插件单独放在一个分包P中,分包XY通过分包异步化来引入。

分包异步化

官网
简单介绍一下,一般我们从主包跳到分包或者分包跳到分包,都是跳页面,在跳的时候才会去加载分包,但是如果在一个分包里想要引入另一个分包的组件或者接口的时候,这个时候就没办法正常使用了,因为另一个分包不知道在什么时机去加载。分包异步化则解决了这个问题。

跨分包自定义组件引用

目录结构,有两个分包1和2,分包1中有一个自定义组件,这时候分包2想要引入分包1的组件,代码如下:
在这里插入图片描述

"subpackages": [
	{
	  "root": "pagesPlugin1",
	  'pages': [
	    'page-index/index'
	  ],
	  "plugins": {
	    "assist-photo": {
	      "version": "3.2.1",
	      "provider": "wxcf13b931313209a4"
	    }
	  }
	},
	{
	  "root": "pagesPlugin2",
	  'pages': [
	    'page-index/index'
	  ]
	}
]

这是分包2的代码

<style lang="less">
</style>

<template>
  <div>这是pagesPlugin2</div>
  <chose-part></chose-part>
</template>

<script>
import wepy from '@wepy/core'
wepy.page({
  data: {
  },
  onShow() {
  }
})
</script>
<config>
{
  "usingComponents": {
    "chose-part": "../../pagesPlugin1/components/chose-part/index",
  },
  "componentPlaceholder": {
    "chose-part": "view"
  }
}
</config>

这个时候,打开分包2的页面就可以看到这个组件了

跨分包 JS 代码引用

分包2想调用分包1的接口,这里在分包1先导出一些函数
pagesPlugin1/utils/index.js

export const sayHello = () => {
  console.log('hello')
}

在分包2调用
pagesPlugin2/page-index/index

import wepy from '@wepy/core'
wepy.page({
  data: {
  },
  methods: {
    getPagesPlugin1 () {
      require.async('../../pagesPlugin1/utils/index.js').then(pkg => {
        console.log('utils', pkg)
        pkg.sayHello()
      }).catch(({mod, errMsg}) => {
        console.error(`path: ${mod}, ${errMsg}`)
      })
    }
  },
  onShow() {
    this.getPagesPlugin1()
  }
})

注意:如果是使用 wepy 这样的框架,则需要在分包的页面中引入一下这些接口函数,否则最终打包不会打包这个接口函数,因为识别不出这些依赖

所有代码亲测有效哦~
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/377145.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从Java培训班出来好找工作吗?

个人觉得这个问题要从两方面来看&#xff0c;首先是培训班的Java课程质量如何&#xff0c;是否贴合用人单位实际需求&#xff0c;学出来的技术能对口&#xff1b;其次是培训班是否保障就业&#xff0c;有就业机会渠道推荐&#xff0c;比如老学员内推、合作企业人才输送以及企业…

【Spring Cloud Alibaba】008-Sentinel

【Spring Cloud Alibaba】008-Sentinel 文章目录【Spring Cloud Alibaba】008-Sentinel一、服务雪崩1、概述2、解决方案常见的容错机制二、Sentinel&#xff1a;分布式系统的流量防卫兵1、**Sentinel** 概述简介特性Sentinel 的开源生态Sentinel 的历史2、Sentinel 基本概念资源…

低代码系统能够解决哪些痛点?

低代码系统能够解决哪些痛点&#xff1f;如果用4句话去归纳&#xff0c;低代码开发可以解决以下问题—— 为企业提供更高的灵活性&#xff0c;用户可以突破代码的限制自主开发业务应用&#xff1b;通过减少对专业软件开发人员的依赖&#xff0c;公司可以快速响应市场上的新业务…

cartographer中分支定界法理解——为什么能保证上界

定界原理 储存的不同分辨率栅格图&#xff0c;为保证上边界正确性&#xff0c;即高层中的评分一定高于其底层节点的评分&#xff0c;压缩的地图并非直接从原图固定间隔采样&#xff0c;而是将固定间隔中所有坐标概率值最大值作为低分辨率地图。 理解&#xff1a; 1、其在计算…

ESP32中MQTT通讯

MQTT文档介绍 一、在PC上可以使用 MQTT X 工具&#xff1a;&#xff08;参考地址&#xff09; 1、客户端下载&#xff1a;MQTT X 工具下载地址 2、EMQX服务器下载地址 3.打开命令行工具&#xff0c;进入目录运行EMQX服务。 电脑左下角&#xff0c;右键开始->运行->输…

“双碳”目标下二氧化碳地质封存技术应用前景及模型构建

我国二氧化碳地质封存技术起步较晚&#xff0c;目前仍没有一套相对完整的行业规范&#xff1b;且就该技术而言&#xff0c;涉及环节众多&#xff0c;理论相对复杂&#xff0c;对于行业的新入局者不太友好。因此&#xff0c;结合时代背景&#xff0c;我们首次尝试对二氧化碳地质…

升级多语言,应用国际化_三叠云

国际化配置 路径 表单设计 >> 字段属性 功能简介 【字段】新增 「国际化配置」 这是一个和国际化配合的功能&#xff0c;可以在用户通过切换不同的语言环境时&#xff0c;表单的标题、提示语等将会根据相应的语言环境切换到相应的表单字段标题、提示语&#xff0c;使…

Eureka注册中心-Ribbon负载均衡

1、Eureka注册中心服务注册与发现提供了一个服务注册中心、服务发现的客户端&#xff0c;还有一个方便查看所有注册的服务的界面。所有的服务使用Eureka的服务发现客户端来将自己注册到Eureka的服务器上。1.1 、Eureka的结构和作用1.1.1、Eureka的作用1.1.2、获取地址信息的流程…

【C++进阶】三、二叉搜索树

目录 一、二叉搜索树 1.1 概念 1.2 二叉搜索树操作 二、二叉搜索树实现 2.1 框架总览 2.2 实现接口总览 2.2.1 构造函数 2.2.2 拷贝构造 2.2.3 赋值重载 2.2.4 析构函数 2.2.5 二叉搜索树的遍历 2.2.6 插入函数 2.2.7 查找函数 2.2.8 删除函数 2.3 二叉搜索数完整…

MotionLayout动画效果实现的几种方式

前言MotionLayout 的使用大家应该都会了&#xff0c;如果不会看这里。本文就不科普如何使用&#xff0c;什么属性是什么意思&#xff0c;怎么使用之类的了&#xff0c;这里只是探讨一下 MotionLayout 效果实现的几种方式。一、ConstraintLayout 的方式定义我们知道 MotionLayou…

第三回:布局格式定方圆

import numpy as np import pandas as pd import matplotlib.pyplot as plt plt.rcParams[font.sans-serif] [SimHei] #用来正常显示中文标签 plt.rcParams[axes.unicode_minus] False #用来正常显示负号一、子图 1. 使用 plt.subplots 绘制均匀状态下的子图 返回元素分…

ROS1学习笔记:ROS中的坐标管理系统(ubuntu20.04)

参考B站古月居ROS入门21讲&#xff1a;ROS中的坐标系管理系统 基于VMware Ubuntu 20.04 Noetic版本的环境 文章目录一、机器人中的坐标变换二、TF功能包三、小海龟跟随实验3.1 启动实验3.2 查看当前的TF树3.3 坐标相对位置可视化3.3.1 tf_echo3.3.2 rviz一、机器人中的坐标变换…

2023上半年软考,广州/东莞/深圳/江苏报班是明智的选择

软考是全国计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试&#xff08;简称软考&#xff09;项目&#xff0c;是由国家人力资源和社会保障部、工业和信息化部共同组织的国家级考试&#xff0c;既属于国家职业资格考试&#xff0c;又是职称资格考试。 系统集成…

飞桨paddlenlp安装报错python setup.py egg_info did not run successfully.

原因缺少setuptools_scm 安装setuptools_scm pip install setuptools_scm 然后再安装paddlenlp就会噼里啪啦的下载一大堆东东了 下载OVER

【K8S系列】第十四讲:初识K8s架构之服务器的变迁

目录 序言 1简介 1.1 物理机时代 物理服务器的缺点 1.2 虚拟机 虚拟机优缺点 1.3 容器时代 1.4 总结 2 容器编排 2.1 什么是容器编排 序言 人生犹如一股奔流&#xff0c;没有暗礁&#xff0c;激不起美丽的浪花。 三言两语&#xff0c;不如细心探索 今天学习一下K8s…

ROS从入门到精通2-6:Rviz可视化进阶(画坐标轴、直线、平面、圆柱等)

目录0 专栏介绍1 Rviz可视化2 环境配置3 使用方法4 测试用例0 专栏介绍 本专栏旨在通过对ROS的系统学习&#xff0c;掌握ROS底层基本分布式原理&#xff0c;并具有机器人建模和应用ROS进行实际项目的开发和调试的工程能力。 &#x1f680;详情&#xff1a;《ROS从入门到精通》…

因《狂飙》张颂文,吐槽广东人比内地人聪明,周杰才是地域黑鼻祖

最近一段时间&#xff0c;电视剧《狂飙》落下帷幕&#xff0c;但是关于这部电视剧的争议&#xff0c;却从来就没有停止过。尤其是主演张颂文&#xff0c;更是受到了大家的关注&#xff0c;不但圈住了很多的粉丝&#xff0c;影视圈很多同行也对他赞许有加。 自古以来同行是冤家&…

SSM-SpringBoot(快速启动,yaml配置)

1 SpingBoot简介 1.1 创建SpringBoot项目 创建 层次 boot程序最基本的架子 开发 RestController RequestMapping("/books") public class BookController {GetMapping("/{id}")public String getById(PathVariable Integer id){System.out.println(&qu…

亚马逊云科技张文翊:云计算正成为企业数字化的“技术底座”

在走进经济筑底重启回升的2023年&#xff0c;我们该如何直面这场需要时间验证的修复之旅&#xff1f;亚马逊全球副总裁、亚马逊云科技大中华区执行董事张文翊与《经济观察报》App的“企业家说2023”栏目展开对谈&#xff0c;分享亚马逊云科技如何立于云端&#xff0c;帮助企业上…

Java及JVM简介

世界上没有最好的编程语言&#xff0c;只有最适用于具体应用场景的编程语言 懂得JVM内部的内存结构、工作机制&#xff0c;是设计高扩展性应用和诊断运行时问题的基础&#xff0c;也是Java工程师进阶的必备能力。 java介绍 java是目前应用最为广泛的软件开发平台之一。随着…