我们以cdn版本的vue写一个示例:

子组件remote-component.js
// remote-component.js
({ // 注意这里要用括号包裹对象
name: 'remote-component',
template: `
<div>
<h1>{{ title }}</h1>
<button @click="onClick">点击</button>
</div>
`,
data: function() { // Vue2 中 data 必须是函数
return {
title: '远程组件'
}
},
methods: {
onClick() {
alert('按钮被点击');
}
}
})远程调用子组件的页面
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/vue@2.6.1-dev.js"></script>
</head>
<body>
<div id="app">
<remote-component-loader :url="componentUrl"></remote-component-loader>
</div>
<script>
// 组件加载器实现
Vue.component('remote-component-loader', {
template: `
<div>
<component
v-if="componentData"
:is="componentData"
v-bind="$attrs"
v-on="$listeners"
></component>
<div v-else-if="error">{{ error }}</div>
<div v-else>加载中...</div>
</div>
`,
props: {
url: {
type: String,
required: true
}
},
data() {
return {
componentData: null,
error: null
}
},
created() {
this.loadComponent();
},
methods: {
loadComponent() {
fetch(this.url)
.then(response => response.text())
.then(componentStr => {
try {
this.componentData = eval(componentStr);
} catch (err) {
this.error = '组件格式错误: ' + err.message;
console.error('组件解析失败:', err);
}
})
.catch(err => {
this.error = '加载失败: ' + err.message;
console.error('加载失败:', err);
});
}
},
watch: {
url: {
handler: 'loadComponent'
}
}
});
// Vue 实例
new Vue({
el: '#app',
data: {
componentUrl: '/asset/remote-component.js'//远程子组件的URL地址
}
});
</script>
</body>
</html> 网友回复
有没有不依赖embedding向量的RAG技术?
有没有支持实时打断语音通话并后台帮你执行任何的ai模型?
开源ai大模型文件格式GGUF、MLX、Safetensors、 ONNX 有什么区别?
出海挣钱支付收款PayPal、Wise 、PingPong、Stripe如何选择?
如何实现类似google的图片隐形水印添加和识别技术?
linux上如何运行任意windows程序?
ai能写出比黑客还厉害的零日漏洞等攻击工具攻击任意软件系统工程?
js如何获取浏览器的音频上下文指纹、Canvas指纹、WebGL渲染特征?
为啥ai开始抛弃markdown文本,重新偏好html文本了?
网站有没有办法鉴别访问请求是由ai操控chrome-devtools-mcp发出的?


