写给小白的 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 下节见!



相关文章
|
前端开发
前端学习笔记202305学习笔记第二十三天-vue3项目搭建1
前端学习笔记202305学习笔记第二十三天-vue3项目搭建1
53 0
前端学习笔记202305学习笔记第二十三天-vue3项目搭建1
|
8月前
|
JavaScript
Vue 学习记录,从难受到真香
Vue 学习记录,从难受到真香
43 2
|
JavaScript IDE 编译器
🚀Vue 3.3来了,快来看看吧!🚀
🚀Vue 3.3来了,快来看看吧!🚀
|
小程序 JavaScript 安全
[笔记]vue从入门到入坟《六》Hbuilder/Vue-cli 开发uniapp的微信小程序
[笔记]vue从入门到入坟《六》Hbuilder/Vue-cli 开发uniapp的微信小程序
183 0
|
前端开发
前端学习笔记202304学习笔记第十九天-vue3.0-总结
前端学习笔记202304学习笔记第十九天-vue3.0-总结
83 0
|
JavaScript 前端开发 程序员
前端程序员入门:先学Vue3还是Vue2?
前端程序员入门:先学Vue3还是Vue2?
1031 0
|
监控 JavaScript 前端开发
从零到英雄:Vue CLI 让你成为前端开发高手(一)
从零到英雄:Vue CLI 让你成为前端开发高手(一)
|
JavaScript API 开发者
想知道Vue3与Vue2的区别?五千字教程助你快速上手Vue3!(下)
想知道Vue3与Vue2的区别?五千字教程助你快速上手Vue3!(下)
121 0
|
JavaScript 前端开发 API
想知道Vue3与Vue2的区别?五千字教程助你快速上手Vue3!(上)
想知道Vue3与Vue2的区别?五千字教程助你快速上手Vue3!(上)
297 0
|
JavaScript API
想知道Vue3与Vue2的区别?五千字教程助你快速上手Vue3!(中)
想知道Vue3与Vue2的区别?五千字教程助你快速上手Vue3!(中)
82 0