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

敖降网站建设可以免费进的服务器网站

敖降网站建设,可以免费进的服务器网站,网站开发实训目的,WordPress扫码在 Vue 3 中,如果 public 目录下的 .js 文件中有一个函数执行后生成数据,并希望将这些数据传递到组件中,可以使用 window.postMessage,但需要结合具体场景。以下是不同方法的详细说明: 方法 1:使用 window…

在 Vue 3 中,如果 public 目录下的 .js 文件中有一个函数执行后生成数据,并希望将这些数据传递到组件中,可以使用 window.postMessage,但需要结合具体场景。以下是不同方法的详细说明:

方法 1:使用 window.postMessage(跨窗口/跨域通信)

window.postMessage 主要用于 跨窗口通信(例如与 iframe 或新打开的窗口)或 跨域通信。如果数据来自外部窗口或需要跨域传递,可以用此方法。
实现步骤:

  1. 在 public 的 .js 文件中发送数据
    假设 public/js/data.js 中有一个函数生成数据后发送消息:
// public/js/data.js
function generateData() {const data = [1, 2, 3, 4, 5];// 发送消息到父窗口(假设此脚本在 iframe 中运行)window.parent.postMessage({ type: 'DATA_UPDATE', payload: data }, '*');
}
generateData();
  1. 在 Vue 组件中监听消息
<script>
export default {data() {return {receivedData: []};},mounted() {window.addEventListener('message', this.handleMessage);},beforeUnmount() {window.removeEventListener('message', this.handleMessage);},methods: {handleMessage(event) {// 验证来源(避免安全风险)// if (event.origin !== '期望的域名') return;if (event.data.type === 'DATA_UPDATE') {this.receivedData = event.data.payload;}}}
};
</script>

适用场景
数据来自 iframe 或新窗口。
需要跨域通信(需严格验证 event.origin)。

方法 2:直接触发全局事件(同一窗口)

如果数据在同一窗口内生成,可以通过 自定义事件 或 全局变量 直接传递,无需 postMessage。
实现步骤:

  1. 在 public 的 .js 文件中触发事件
// public/js/data.js
function generateData() {const data = [1, 2, 3, 4, 5];// 触发自定义事件const event = new CustomEvent('DATA_READY', { detail: data });window.dispatchEvent(event);
}
generateData();
  1. 在 Vue 组件中监听事件
<script>
export default {data() {return {receivedData: []};},mounted() {window.addEventListener('DATA_READY', this.handleDataReady);},beforeUnmount() {window.removeEventListener('DATA_READY', this.handleDataReady);},methods: {handleDataReady(event) {this.receivedData = event.detail;}}
};
</script>

优点
无需跨窗口,直接在同一页面通信。

代码更简洁,无需处理跨域安全。

方法 3:通过全局变量直接访问(最简单)

如果数据生成后可以直接挂载到全局对象:

  1. 在 public 的 .js 中暴露数据
// public/js/data.js
function generateData() {window.publicData = [1, 2, 3, 4, 5];
}
generateData();
  1. 在组件中直接访问
<script>
export default {data() {return {localData: window.publicData || []};}
};
</script>

方法 4:动态执行函数(适用于非模块化脚本)

如果数据是通过函数动态生成的,可以通过 eval 或 Function 执行脚本并提取数据:

<script>
export default {data() {return {localData: []};},async mounted() {const response = await fetch(`${import.meta.env.BASE_URL}js/data.js`);const scriptText = await response.text();// 动态执行脚本并获取数据const getData = new Function(`${scriptText}return generateData(); // 假设 generateData() 返回数据`);this.localData = getData();}
};
</script>

方法选择建议
同一窗口内通信

优先使用 全局事件 (CustomEvent) 或 全局变量。

如果数据生成是同步的,直接用全局变量;如果是异步的,用事件通知。

跨窗口/跨域通信

使用 window.postMessage,但务必验证 event.origin。

静态数据

将 .js 文件改为 ES 模块,通过动态 import() 引入(推荐)。

安全注意事项
避免 XSS 攻击:如果直接执行来自 public 目录的脚本,需确保文件内容可信。

验证消息来源:使用 postMessage 时,始终检查 event.origin。

避免全局污染:尽量使用模块化方案或事件机制,减少对 window 对象的依赖。

通过以上方法,可以灵活地将 public 目录下 .js 文件中的函数生成的数据传递到 Vue 组件中。

http://www.yayakq.cn/news/466480/

相关文章:

  • 网站商城设计网站建设对接视频
  • 晨旭东方网站建设建设ipv6网站
  • 金数据可以做网站吗推广普通话的法律依据主要有
  • 海报模板免费网站wordpress本地网站打开慢
  • 百合网网站建设与策划怎么用阿里云服务器做淘客网站
  • 网站主页设计步骤地方网站怎么做
  • 网站首页图片大小asp.net网站打不开html页面
  • 大屏手机网站建设网站需要哪些条件
  • 重庆网站制作公司哪家好深圳保障性住房轮候查询
  • 公园网站建设东湖网站建设
  • 给一个网站风格做定义会议展厅设计装修公司
  • 专业app网站建设网站色差表
  • 电子商务网站数据库怎么做网站页面的大小写
  • 如何做网站服务器品牌宣传的推广
  • 六站合一的应用场景电脑怎么做网站赚钱
  • 网站续费价格seo课程在哪培训好
  • 推荐做问卷的网站遵义发布
  • linux做网站要多大内存专业团队为您服务的句子
  • 网站优化开发宁波企业做网站哪家好
  • 宁波网站建设官网dw网页设计实验报告
  • 东莞网站优化建设团队打开浏览器自动弹出2345网址导航
  • wap网站建设设计行牛建站
  • 网站设计公司营销crm系统唐山哪里做网站
  • 网站新功能演示用什么技术做的深圳市建设工程造价管理站
  • 一个公司网站备案吗主页值得是网站的主要内容所在页
  • 单位网站建设情况调查情况郑州专业的建网站
  • 长沙网站制作案例wordpress搭建表格
  • 三合一企业网站模板旅游房地产网站建设
  • 如何制作网站后台广东佛山网络科技有限公司
  • 青海省住房和城乡建设厅网站首页金堂网站建设