有一点小需求,有些组件布局及使用数据是不确定性的。
当然不会把所有都做成远程加载,只是在思考。在某些小部件上面,用远程加载的方式是否可行?
另外,如果不能实现,不知道有没有什么好的思路介绍一下,谢谢
两个方法我都试过了。第二种比较好,但是问题在于 Props 如果要求发生改变了或者改动了怎么办。
上个简单的示例
A.vue
<template>
<div>
<h1>这是父组件<h1>
<div class="remoteload"></div>
</div>
</template>
<script>
import Vue from 'vue'
export default {
name: 'ok',
methods: {
getRemoteTemplate () {
this.$fetch.get('/static/1.html')
.then(res => {
let Comp = Vue.extend({template: res.data})
new Comp().$mount('remoteload')
})
}
}
}
</script>
1.html
<p>我是远程加载的 template</p>
在这里,只能加载一些静态内容,达不到需要的远程加载动态组件。
再看另一种实现,写的比较粗糙。
A.vue
<template>
<div>
<h1>这是父组件<h1>
<component :is="remote" msg="V2EX">
</div>
</template>
<script>
import Vue from 'vue'
export default {
name: 'ok',
data () {
return {
remote: null
}
},
methods: {
getRemoteTemplate () {
this.$fetch.get('/static/1.html')
.then(res => {
let tpl = Vue.compile(res.data)
this.remote = {
render: tpl.render,
props: {
msg: {
type: String,
default: ''
}
}
}
})
}
}
}
</script>
1.html
<h1>Hello, {{msg}}</h1>
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.