全局动态组件uniapp(vue)
全局动态组件uniapp(vue)
在我们很多项目中,我们需要创建一个组件,使其他在所有的路由页都存在,比如手机上的悬浮在屏幕上的圆形快捷按钮,那么我们就需要创建一个全局组件。
创建组件时我们所考虑的主要是两个点,一个是组件的创建和销毁,第二个是组件的通信。
1.组件的创建和销毁uniapp(vue)
使用 Vue.extend() 来扩展组件构造器,并手动挂载,目前有一个组件MzFloatingBox,直接调用createCustomerService就可以实现组件创建。
import MzFloatingBox from './components/MzFloatingBox.vue';
export function createCustomerService() {// 扩展 MzFloatingBox 组件构造器const CustomerServiceConstructor = Vue.extend(MzFloatingBox);// 创建组件实例const instance = new CustomerServiceConstructor();// 手动挂载到一个新的 div 元素上instance.$mount();// 将组件的 DOM 元素添加到页面上document.body.appendChild(instance.$el);// 返回组件实例(可以操作组件中的方法或数据)return instance;
}
组件销毁时,使用组件实例的 $destroy() 方法,然后移除组件的 DOM 元素。
export function destroyCustomerService(instance) {instance.$destroy(); // 销毁组件实例document.body.removeChild(instance.$el); // 移除 DOM 元素
}
如果当前版本为vue3版本的话,那么需要使用createApp()来创建组件实例,并且需要使用unmount()方法来销毁组件实例。
import { createApp } from 'vue';import MzFloatingBox from './components/MzFloatingBox.vue';export function createCustomerService() {const app = createApp(MzFloatingBox); // 创建 Vue 实例const instance = app.mount(document.createElement('div')); // 挂载到一个新的 DOM 元素上document.body.appendChild(instance.$el); // 将挂载后的 DOM 添加到页面上// 可以通过 instance 调用组件中的方法或数据return instance; }
销毁功能同上一样。
2.组件的通信uniapp
如果在uniapp中时,可以直接使用uni.eventBus来实现组件的通信,但是需要注意的是,在uniapp中,eventBus是一个全局变量,所以不需要在组件中引入,直接使用即可. 详细文档请点击传送门查看,具体代码如下:
// 触发自定义事件
uni.$emit('mzFloatingBox', true)
// 监听自定义事件
uni.$on('mzFloatingBox', data => {// do something
})
// 销毁自定义事件
uni.$off('mzFloatingBox', callback)
如果在vue中(vue2和vue3都支持),可以使用mitt来作为事件总线,具体可点击传送门查看,具体代码如下:
- 安装mitt
npm install mitt
- 创建一个 eventBus.js 来封装 mitt 的功能
// src/eventBus.jsimport mitt from 'mitt';const eventBus = mitt();export default eventBus;
- 在组件中使用 EventBus
发送事件(emit)
// 组件1: 发送事件<template><button @click="sendEvent">发送事件</button></template><script>import eventBus from '@/eventBus';export default {name: 'Component1',methods: {sendEvent() {eventBus.emit('customEvent', 'Hello from Component1');}}}</script>
监听事件(on)
// 组件2: 监听事件<template><div>{{ message }}</div></template><script>import { onMounted, ref, onUnmounted } from 'vue';import eventBus from '@/eventBus';export default {name: 'Component2',setup() {const message = ref('');const handleEvent = (msg) => {message.value = msg;};onMounted(() => {eventBus.on('customEvent', handleEvent);});onUnmounted(() => {eventBus.off('customEvent', handleEvent);});return {message};}}</script>
- eventBus.emit(‘customEvent’, data):在组件 1 中,发送一个名为 customEvent 的事件,并传递数据(如 “Hello from Component1”)。
- eventBus.on(‘customEvent’, handler):在组件 2 中,监听 customEvent 事件并接收数据,通过 handler 函数来处理。
- eventBus.off(‘customEvent’, handler):在组件销毁时,取消事件监听,防止内存泄漏。
- 除了 mitt,你还可以使用 Vuex 或 provide/inject 等官方推荐的方式来进行跨组件通信.但是provide/inject局限于父子/爷孙组件通信
相关文章:
全局动态组件uniapp(vue)
全局动态组件uniapp(vue) 在我们很多项目中,我们需要创建一个组件,使其他在所有的路由页都存在,比如手机上的悬浮在屏幕上的圆形快捷按钮,那么我们就需要创建一个全局组件。 创建组件时我们所考虑的主要是两个点,一个…...

spring分层解耦(springboot)
三层架构 三层架构在项目文件中的分布 软件设计的原则,高内聚低耦合 高内聚:软件中各个功能模块内部的功能联系紧密,每个模块的功能实现具体 低耦合:软件中各个层/模块之间的依赖,关联的程度低 分层解耦的思想 IOC&…...

最新智能优化算法:牛优化( Ox Optimizer,OX)算法求解经典23个函数测试集,MATLAB代码
一、牛优化算法 牛优化( OX Optimizer,OX)算法由 AhmadK.AlHwaitat 与 andHussamN.Fakhouri于2024年提出,该算法的设计灵感来源于公牛的行为特性。公牛以其巨大的力量而闻名,能够承载沉重的负担并进行远距离运输。这种…...

尚硅谷 java 学习Day19 抽象类与抽象方法、接口、内部类
6-5 抽象类(abstract)与抽象方法(important) 一、什么叫抽象类: 有时候将一个父类设计的非常抽象,以至于它没有具体的实例,这样的类称为抽象类 abstract关键字的使用: 1、abstract:抽象的 2、abs…...

机器学习数理基础:从概率到梯度下降的全面解析
一、引言:为什么需要数理基础? 机器学习是数据与算法的艺术,而数学是其背后的语言。无论是理解模型原理、优化算法,还是解决实际问题,扎实的数理基础都是必不可少的。本文将从概率论、线性代数、微积分三大核心领域出发…...
数据结构:哈希
哈希函数的概念:哈希函数是哈希表(散列表)的核心组件,其作用是将任意长度的键(Key)映射为固定长度的存储地址,以实现高效的数据存储与检索。以下是哈希函数在数据结构中的关键知识点总结&#x…...
Openssl交叉编译
在 OpenSSL 交叉编译中,linux-aarch64是一个用于指定目标平台的配置选项,表示目标是 X86 架构的 64位系统。这个选项可以从 OpenSSL 的 ./Configure 命令支持的平台列表中获取。 你可以通过运行以下命令查看 OpenSSL 支持的所有平台配置选项:…...

【linux】更换ollama的deepseek模型默认安装路径
【linux】更换ollama的deepseek模型默认安装路径 文章目录 【linux】更换ollama的deepseek模型默认安装路径Ollama 默认安装路径及模型存储路径迁移ollama模型到新的路径1.创建新的模型存储目录2.停止ollama3.迁移现有模型4.修改 Ollama 服务配置5.重启ollama6.验证迁移是否成功…...
组合模式详解(Java)
一、组合模式基本概念 1.1 定义与类型 组合模式是一种结构型设计模式,它通过将对象组织成树形结构,来表示“部分-整体”的层次关系。这种模式使得客户端可以一致地对待单个对象和组合对象,从而简化了客户端代码的复杂性。组合模式的核心在于定义了一个抽象组件角色,这个角…...

蓝桥杯单片机基础部分——单片机介绍部分
前言 这个部分是额外的,我看我有的学弟学妹基础比较差,对板子上面的模块不太熟悉,这里简单的介绍一下 蓝桥杯单片机 这个就是蓝桥杯单片机的板子,它的主控芯片是(IAP15F2K61S2),这里就对他常用…...

如何简单的去使用jconsloe 查看线程 (多线程编程篇1)
目录 前言 1.进程和线程 进程 PCB 的作用 并发编程和并行编程 线程 为什么选择多线程编程 2.在IDEA中如何简单创建一个线程 1. 通过继承Thread类 2. 通过实现 Runnable 接口 3. 使用 Lambda 表达式 3.如何简单使用jconsloe去查看创建好的线程 前言 2025来了,这是第…...
python学习笔记,python处理 Excel、Word、PPT 以及邮件自动化办公
文章目录 前言一、环境搭建1. 下载 Python2. 安装 Python 二、处理 Excel 文件(openpyxl库)三、 处理 Word 文件(python-docx库)四、 处理 PPT 文件(python-pptx库)五、 自动发送邮件(smtplib和…...
DeepSeek教unity------Dotween
1、命名法 Tweener(补间器):一种控制某个值并对其进行动画处理的补间。 Sequence(序列):一种特殊的补间,它不直接控制某个值,而是控制其他补间并将它们作为一个组进行动画处理。 Tw…...
前端开发中关于虚拟列表的实现与应用优化
前端开发中关于虚拟列表的实现与应用优化 一、引言 在前端开发的日常工作中,我们常常会遇到需要展示大量数据列表的场景。比如电商平台的商品列表、社交平台的动态信息流等。当数据量庞大时,直接渲染所有数据会导致页面性能急剧下降,出现卡…...

图解JVM-1. JVM与Java体系结构
一、前言 在 Java 开发的广袤天地里,不少开发者都遭遇过令人头疼的状况。线上系统毫无征兆地卡死,陷入无法访问的僵局,甚至直接触发 OOM(OutOfMemoryError,内存溢出错误);面对 JVM 的 GC&#…...

Word中的文档信息域
Word中的文档信息域 DocProperty包含文档信息的多个属性, 也可以自定义属性. 查看文档预定义的自定义属性 【文件】→【信息】→【属性】→【高级属性】 参考链接 WORD中文档属性域DocProperty的应用-CSDN博客 第06套 Word_哔哩哔哩_bilibili...

Linux中的权限问题(二)
一、不受权限约束的root 按照文件的使用者进行匹配后,即使权限是“---” root依旧可以正常进行读,写,运行 二、文件拥有者和所属组的更改方法以及限制 2.1chown:更改文件拥有者以及所属组 ①可以单独修改文件拥有者 chown[更…...
【ISO 14229-1:2023 UDS诊断全量测试用例清单系列:第十八节】
ISO 14229-1:2023 UDS诊断服务测试用例全解析(ResponseOnEvent_0x86服务) 作者:车端域控测试工程师 更新日期:2025年02月14日 关键词:UDS协议、0x86服务、事件响应、ISO 14229-1:2023、ECU测试 一、服务功能概述 0x86…...
Spring Boot自动装配:约定大于配置的魔法解密
#### 一、自动装配的哲学思考 在传统Spring应用中,开发者需要手动配置大量的XML或JavaConfig。Spring Boot通过自动装配机制实现了**约定大于配置**的设计理念,其核心思想可以概括为: 1. **智能预设**:基于类路径检测自动配置 2…...

[笔记.AI]大模型的蒸馏、剪枝、量化 | 模型压缩 | 作用与意义
上周简单整理了《deepseek-r1的不同版本(满血版、蒸馏版、量化)》,这次继续完善对其的认知——补充“剪枝”,并进一步整理蒸馏、剪枝、量化的作用与意义。 以下摘自与DeepSeek-R1在线联网版的对话 蒸馏、剪枝、量化是当前主流的三…...

测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...

idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...

label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...

MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...

【JVM】- 内存结构
引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...