依赖注入+中央事件总线:Vue 3组件通信新玩法

server/2024/9/23 7:50:10/

​🌈个人主页:前端青山
🔥系列专栏:Vue篇
🔖人终将被年少不可得之物困其一生

依旧青山,本期给大家带来Vue篇专栏内容:Vue-依赖注入-中央事件总线

目录

中央事件总线使用

依赖注入使用

总结

中央事件总线

依赖注入

结言

大家好,依旧青山,

最近呢也随着需求的变更调优,加载数字孪生地图的缓慢,要将原有vue3+Ts数据大屏子菜单整合到一个地图环境下(注:无需加载其余地图场景,同一地图环境下切换不同菜单),也就是主页面及子菜单调用一次地图环境即可,页面很好集合前嵌套,但是不同页面对地图的操作该如何呢?

那么我首先做的就是封装一个公共的地图调用方法,以组件形式引入所有子菜单实现跨组件通信!

以数字孪生地图为例

javascript">import { ElLoading } from 'element-plus'
import mapJson from '@/utils/tjbhJson';
import textArr from '@/utils/textJson';
import cloudRenderer from "51superapi"
import { ref, onMounted, onBeforeUnmount,reactive,watchEffect } from "vue"
// 引入前缀路径
//封装51地图函数
const app = new cloudRenderer("mapDiv");
export default function (){   let loadingInstance: any; // 在更宽泛的作用域定
const prefixUrl = import.meta.env.VITE_APP_BASE_API || '';
//配置51地图参数
const startRenderConfig = reactive({   "url": "http://192.168.1.20:8080", //[必须] 云渲染服务地址; 8889:固定端口   "order": "123456", //[必须] 渲染口令; 在云渲染客户端上获得   "resolution": [window.innerWidth > 1920? 4096 : window.innerWidth,window.innerHeight >1080? 1209 : window.innerHeight], //[可选] 设置渲染场景像素分辨率   "nodestyle": `width:${window.innerWidth > 1920? 4096 : window.innerWidth};height:${window.innerHeight >1080? 1209 : window.innerHeight};position:absolute;top:0px;left:0px;bottom:0px;right:0px;margin:auto;`, //[可选] 设置渲染场景容器DOM节点样式, 与设置渲染场景像素分辨率配对使用   "keyboard": "keyboardnofn", //[可选] 初始建盘事件, 开启wasd方向键 [选项: keyboard/keyboardnofn; 详见注册键盘事件]   "setlogmode": true, //[可选] 开启/关闭SuperAPI调用日志, 默认false
})
// 设置初始分辨率
startRenderConfig.resolution = [   window.innerWidth > 1920 ? 4096 : window.innerWidth,   window.innerHeight > 1080 ? 1209 : window.innerHeight,
];
//围绕中心旋转
let jsonData = {   "time": 50,                      //相机旋转一周所需要的时间, (单位:秒)   "direction": "stop"         //clockwise:顺时针; anticlockwise:逆时针; stop:停止旋转
}
//添加区域轮廓
let jsondata2 = {   "id": "range_id",   "coord_type": 0,                  //坐标类型(0:经纬度坐标, 1:cad坐标)   "cad_mapkey": "",                 //CAD基准点Key值, 项目中约定   "coord_z": 0,                     //高度(单位:米)   "coord_z_type": 0,                //坐标高度类型(0:相对3D世界表面;1:相对3D世界地面;2:相对3D世界海拔; 注:cad坐标无效)   "type": "loop_line",                   //样式类型; 注①   "color": "ffffff",              //轮廓颜色(HEXA颜色值)   "range_height": 60,               //围栏高度(单位:米)   "stroke_weight": 10,              //底部轮廓线宽度(单位:米; 注: 区域中含有内环"inner_points"时无效)   "fill_area": "none",              //底部区域填充类型; 注②   "geojson": mapJson,                 //geojson数据; 注③
​
}
//添加3d文字信息与区域轮廓
const pushAllCovering = () => {   app.SuperAPI("Add3DText", textArr, (status: any) => {       console.log(status); //成功、失败回调   });   //添加区域轮廓   app.SuperAPI('AddGeoRange', jsondata2).then((_back: any) => {   })
}
//初始地图视角
const Camejsondata = {   "coord_type": 0,                                 //坐标类型(0:经纬度坐标, 1:cad坐标)   "cad_mapkey": "",                                //CAD基准点Key值, 项目中约定   "coord_z": "2.06",                       

http://www.ppmy.cn/server/102620.html

相关文章

代码随想录day46 647. 回文子串 516.最长回文子序列

代码随想录day46 647. 回文子串 516.最长回文子序列 647. 回文子串 代码随想录 class Solution { public:int countSubstrings(string s) {int size s.size();vector<vector<bool>> dp(size, vector<bool>(size, false));int res 0;for (int i size - …

DDPM | 扩散模型代码详解【较为详细细致!!!】

文章目录 1、UNet网络结构1.1 residual网络和attention网络的细节1.2 t 的作用1.3 DDPM 中的 Positional Embedding 的使用1.4 DDPM 中的 Positional Embedding 代码1.5 residual block1.6 attention block1.7 UNet结构 2、命令行参数解析3、数据的获取与预处理4、模型的训练框…

仿RabbitMq实现简易消息队列正式篇(路由匹配篇)

TOC 目录 路由匹配模块 代码展示 路由匹配模块 决定了一条消息是否能够发布到指定的队列 在每个队列根交换机的绑定信息中&#xff0c;都有一个binding_key&#xff08;在虚拟机篇有说到&#xff09;这是队列发布的匹配规则 在每条要发布的消息中&#xff0c;都有一个rout…

海山数据库(He3DB)源码详解:CommitTransaction函数源码详解

文章目录 海山数据库(He3DB)源码详解&#xff1a;CommitTransaction函数1. 执行条件2. 执行过程2.1 获取当前节点状态&#xff1a;2.2 检查当前状态&#xff1a;2.3 预提交处理&#xff1a;2.4 提交处理&#xff1a;2.5 释放资源&#xff1a;2.6 提交事务&#xff1a; 作者介绍…

Servlet---axios框架 ▎路由守卫

前言 在现代Web应用中&#xff0c;前端和后端通常分离&#xff0c;前端使用框架&#xff08;如Vue.js、React&#xff09;与后端服务交互。Servlet是Java EE中处理HTTP请求的重要组成部分&#xff0c;能够生成动态Web内容。 Axios是一个基于Promise的HTTP客户端&#xff0c;简…

并查集(模板+例题)

文章目录 模板[1249. 亲戚 - AcWing题库](https://www.acwing.com/problem/content/description/1251/)思路代码 [237. 程序自动分析 - AcWing题库](https://www.acwing.com/file_system/file/content/whole/index/content/3788/)思路代码 [145. 超市 - AcWing题库](https://ww…

C++面向对象编程(上)

类与对象属于面向对象的程序设计思想(Object Oriented Programming)&#xff0c;简称OOP。 面向对象基础理论 面向对象是一种对现实世界理解和抽象的方法&#xff0c;是计算机编程技术发展到一定阶段后的产物&#xff0c;是一种软件开发的方法 面向对象四大特性 1.抽象 忽…

1.微服务发展阶段

单体应用阶段 简介 系统业务量很小的时候我们把所有的代码都放在一个项目中&#xff0c;然后将这个项目部署在一台服务器上&#xff0c;整个项目所有的服务都由这台服务器去提供 优点 1.展现层、控制层、持久层全都在一个应用里面&#xff0c;调用方便、快速&#xff0c;单个请…