基于vue3.x插件开发与插件封装实现一
文章 274 0 0 0
发布时间:2021年05月30日

概述

基于vue3.x开发插件,封装使用插件
请关注我们的官方组件基于vue3.0无ts实现zmz-ui3组件库

问题

在vue2.0中我们常常使用Vue.extend构造器来载入对象挂载到dom树之上。
而在vue3.0中我们发现Vue.extend消失不见了,

解决

vue3.0中,我们发现官方提供的createApp,通过这个api,我们可以把我们创建的dom树通过mount应用api来挂载,而我们可以通过如下方式:

let app = createApp(组件对象);
app.mount(element)

这个element节点必须存在我们才能挂载,就如入口main.js中的渲染实例挂载到#app上一样,所以我们要先生存标签再去挂载dom节点如下方式:

container = document.createElement('div');
container.className = 'zmz-loadingbar';
let app = createApp(组件对象);
app.mount(container)

我们运行以后发现,怎么没有变化,是不是产生了很多问号。
这样是因为我们虽然创建的dom节点,但是我们没有把它渲染,所以我们要把我们创建的div标签,className为zmz-loadingbar标签的渲染到我们想要的地方,这里我们这个组件是一个全局的所有我们渲染到了与#app平级的地方如图
基于vue3.x插件开发与插件封装
我们在指定的执行方法中挂载

container = document.createElement('div')
container.className = 'zmz-loadingbar'
app = createApp(LoadingBar)
app.mount(container)
document.body.appendChild(container)

而后在我们指定的地方进行组件卸载

app.unmount(container)
document.body.removeChild(container)
container = null

我们在vue2.0中发现组件的挂载通过Vue.extend返回函数对象,通过$mount就可以获取dom树,而vue3.0插件中我们必须要指定一个地方去提供挂载。

而我们createApp实例可以在挂载之前执行如下api:

component(注册)
config(配置)
directive(指令)
mixin(混入)
mount(挂载)
provide(注入)
unmount(卸载)
use(安装插件)
评论专区