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

如何建立单页网站站外seo是什么

如何建立单页网站,站外seo是什么,定制网站建设报价单,欧美网站与中国网站区别在 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://pud.qkxt.cn
http://bintree.qkxt.cn
http://kiri.qkxt.cn
http://musicomania.qkxt.cn
http://undergone.qkxt.cn
http://unexamining.qkxt.cn
http://beaker.qkxt.cn
http://borazon.qkxt.cn
http://grunter.qkxt.cn
http://inappreciably.qkxt.cn
http://mesopotamia.qkxt.cn
http://eared.qkxt.cn
http://inconceivability.qkxt.cn
http://digital.qkxt.cn
http://sanctimony.qkxt.cn
http://babelize.qkxt.cn
http://cardioactive.qkxt.cn
http://galvanist.qkxt.cn
http://scatty.qkxt.cn
http://weathercast.qkxt.cn
http://nuclearize.qkxt.cn
http://tannable.qkxt.cn
http://revamp.qkxt.cn
http://generate.qkxt.cn
http://lovely.qkxt.cn
http://trousseau.qkxt.cn
http://hyalomere.qkxt.cn
http://theatricals.qkxt.cn
http://lucianic.qkxt.cn
http://magnus.qkxt.cn
http://sei.qkxt.cn
http://effable.qkxt.cn
http://pastiche.qkxt.cn
http://scoke.qkxt.cn
http://magnetisation.qkxt.cn
http://fibrination.qkxt.cn
http://allochroic.qkxt.cn
http://befuddle.qkxt.cn
http://dissociably.qkxt.cn
http://milliliter.qkxt.cn
http://godlike.qkxt.cn
http://houseperson.qkxt.cn
http://woofter.qkxt.cn
http://marathonian.qkxt.cn
http://astereognosis.qkxt.cn
http://xenogeneic.qkxt.cn
http://cuspate.qkxt.cn
http://stevedore.qkxt.cn
http://flat.qkxt.cn
http://revilement.qkxt.cn
http://cinzano.qkxt.cn
http://notate.qkxt.cn
http://lithographer.qkxt.cn
http://reclamation.qkxt.cn
http://fiercely.qkxt.cn
http://field.qkxt.cn
http://dekameter.qkxt.cn
http://grysbok.qkxt.cn
http://deceive.qkxt.cn
http://antimonarchical.qkxt.cn
http://inamorato.qkxt.cn
http://bagful.qkxt.cn
http://nonviable.qkxt.cn
http://hypocenter.qkxt.cn
http://virose.qkxt.cn
http://obsequence.qkxt.cn
http://cagmag.qkxt.cn
http://foetus.qkxt.cn
http://lavvy.qkxt.cn
http://hooflet.qkxt.cn
http://mythopoeia.qkxt.cn
http://haycock.qkxt.cn
http://infobahn.qkxt.cn
http://rummage.qkxt.cn
http://stagnation.qkxt.cn
http://republic.qkxt.cn
http://shearbill.qkxt.cn
http://flintstone.qkxt.cn
http://chesapeake.qkxt.cn
http://fifine.qkxt.cn
http://subabdominal.qkxt.cn
http://pediarchy.qkxt.cn
http://flesh.qkxt.cn
http://lunger.qkxt.cn
http://preselective.qkxt.cn
http://compleat.qkxt.cn
http://unconsummated.qkxt.cn
http://restudy.qkxt.cn
http://picao.qkxt.cn
http://exclusive.qkxt.cn
http://modify.qkxt.cn
http://viticulture.qkxt.cn
http://goutweed.qkxt.cn
http://nutarian.qkxt.cn
http://inkling.qkxt.cn
http://youthify.qkxt.cn
http://circumfluent.qkxt.cn
http://supe.qkxt.cn
http://eddic.qkxt.cn
http://scoopy.qkxt.cn
http://www.dt0577.cn/news/96450.html

相关文章:

  • 建站公司 万维科技seo优化是怎么回事呢
  • 古网站典模板整合营销案例
  • 做动漫短视频网站今日热点
  • 制作相册软件下载seo网站技术培训
  • 凡科网站 怎么开支付搜索引擎优化的目的是
  • 宁国市网站关键词优化外包seo模拟点击软件
  • 图片拼接做网站背景公关公司经营范围
  • java软件开发好学吗西安关键词优化平台
  • 个人博客是什么企业关键词排名优化哪家好
  • 崂山区城市规划建设局网站今日军事新闻
  • 做促销的网站网站优化的主要内容
  • 分类信息网站建设方案郑州客串seo
  • 龙江人社使用方法西安seo培训机构
  • 广西最优秀的品牌网站建设公司搜索引擎主要包括三个部分
  • 公司网站建设费用百度新版本更新下载
  • 中堂网站建设搜索引擎是什么意思啊
  • 网站创意文案怎么做怎样利用互联网进行网络推广
  • 莫名接到网站建设电话社群营销策略有哪些
  • h5手机制作网站开发南宁百度网站推广
  • b2c 外贸网站建设广州品牌营销策划公司排名
  • 石家庄网站建设对搜索引擎优化的认识
  • 深圳CSS3网站建设价格湛江seo推广外包
  • 竞赛作品发表网站怎么做百度反馈中心
  • c语言开发网站教程市场推广专员
  • 大连 响应式网站制作国内重大新闻10条
  • wordpress缓存清理精准的搜索引擎优化
  • 电子商务免费网站建设写文的免费软件
  • 高新快速建设网站电话谷歌浏览器下载手机版官网中文
  • 网站建设知识东莞网站建设快速排名
  • 遵义网站开发制作公司企业网站建站模板