起因
项目现在作为产品化,模块越来越多,想尝试可以将一些包可以作为服务独立文件开发。
已经固定的组件可以抽离出项目,作为一个云端组件;一些基础的模块也可以抽离出项目;
这样的话,项目的整个编译的项目将会变得更快,同时可以更加有利于团队的开发,通过隔离文件的方式,将会更大的保证开发的功能彼此互不影响的。
异步组件
Vue.component('async-example', function(resolve, reject) {
setTimeout(function() {
// 向 `resolve` 回调传递组件定义
resolve({
render(h) {
return h('div', '你好')
}
})
}, 1000)
})
这里需要注意的是 resolve({template:"<div>hello world</div>"}) 这种的话, 需要运行在vue的esm版本中,而一般的情况下是使用的是 vue的runtime版本。在runtime版本下是需要使用render进行渲染的。
远端异步组件
为了更加贴进现实的使用场景,我将element-ui组件button的编译版本拉下来,并放在了static文件夹下的,利用axios进行异步请求,最终的使用的方式是:
Vue.component('async-example', function(resolve, reject) {
axios.get('../../../static/button.js').then(res => {
const com = eval(res.data).default
resolve({
render(h) {
return h(com, '你好')
}
})
})
})
最终呈现效果
image.png
网友评论