写给小白的 Vue 插件篇

简介: 如何开发 Vue 插件

## 目的

“插件通常用来为 Vue 添加全局功能。”  

“组件是可复用的 Vue 实例,且带有一个名字。”  

—— Vue.js 官网


官网插件例子做的比较粗糙,不能顺畅的理解插件,故自己试试




## 实操


`1、先写插件内容(类似组件)`



```

<!-- src/components/Warning/index.vue -->

<template>

 <transition name="fade">

   <p v-show="isShow" class="msg">{{ msg }}</p>

 </transition>

</template>


<script>

export default {

 data() {

   return {

     msg: 'warning',

     isShow: false,

     duration: 1,

   }

 },

 mounted() {

   this.isShow = true

   setTimeout(() => {

     this.isShow = false

   }, this.duration * 1000)

 },

}

</script>


<style>

.msg {

 display: flex;

 justify-content: center;

 align-items: center;

}

</style>


```



`2、手动挂载 warning 的 dom`


```

// src/components/Warning/index.js

import Vue from 'vue'

import Warning from './index.vue'


const WarningConstructor = Vue.extend(Warning) // 生成构造器


const warning = function(options={}) {

   const warningChild = new WarningConstructor({ // 实例

       data:options

   }).$mount() // 挂载


   const realDom = warningChild.$el // 真实 dom

   document.body.appendChild(realDom)


   return warningChild

}


export default warning

```

`3、暴露 install 方法 传入 Vue.use()`


```

// src/components/index.js

import waring from './Toast/index';


// Vue.js 的插件应该暴露一个 install 方法。这个方法的第一个参数是 Vue 构造器,第二个参数是一个可选的选项对象

const install = function (Vue) {

 if (install.installed) return;

 install.installed = true;


 // 将包装好的 warning 挂到Vue的原型上,作为 Vue 实例上的方法

 Vue.prototype.$waring = waring;

}


export default {

 install,

};

```


4、使用


```

// main.js

import waring from '../src/components/index.js';

Vue.use(waring);

```



```

// App.vue

<template>

   <button @click="handleClick">点击弹出文字</button>

</template>


methods: {

   handleClick() {

     this.$waring()

   },

 },

```


## 效果展示



![Kapture 2023-03-08 at 15.00.54.gif](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/dce9b9e8ff764496a5e41e832c47d867~tplv-k3u1fbpfcp-watermark.image?)




* good 下节见!



相关文章
QGS
|
3月前
|
JavaScript UED
小白浅学Vue3(下)
小白浅学Vue3
QGS
37 0
QGS
|
3月前
|
缓存 JavaScript 开发者
小白浅学Vue3(中)
小白浅学Vue3
QGS
76 0
QGS
|
3月前
|
缓存 JavaScript 前端开发
小白浅学Vue3(上)
小白浅学Vue3
QGS
91 0
|
3月前
|
缓存 JavaScript 前端开发
看完这篇文章,不再害怕Vue3的源码(二)
看完这篇文章,不再害怕Vue3的源码
|
3月前
|
JavaScript 前端开发 编译器
看完这篇文章,不再害怕Vue3的源码(一)
看完这篇文章,不再害怕Vue3的源码
|
3月前
|
JavaScript 前端开发
Vue快速上手笔记1 - 使用初体验
Vue快速上手笔记1 - 使用初体验
15 0
|
3月前
|
JavaScript 前端开发 API
看完这篇文章,不再害怕Vue3的源码(三)
看完这篇文章,不再害怕Vue3的源码
|
3月前
|
JavaScript
Vue 学习记录,从难受到真香
Vue 学习记录,从难受到真香
16 2
|
4月前
|
JSON JavaScript 前端开发
后端程序员的 VUE 入门上手笔记
后端程序员的 VUE 入门上手笔记
50 0
|
6月前
|
JavaScript IDE 编译器
🚀Vue 3.3来了,快来看看吧!🚀
🚀Vue 3.3来了,快来看看吧!🚀

热门文章

最新文章