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



相关文章
|
4月前
|
缓存 安全 C++
C盘爆满电脑卡?3个简单技巧+1个便捷工具,小白也能轻松清理
电脑使用久了,C盘常因系统文件、软件安装和临时缓存堆积而空间不足,导致运行卡顿甚至蓝屏。本文教你识别C盘“隐形垃圾”,并提供3个手动清理技巧和1个实用工具(CCleaner),轻松释放空间,提升电脑速度,延长使用寿命。定期清理C盘,让电脑始终保持流畅运行。
772 0
|
SQL 关系型数据库 MySQL
mysql如何修改密码
mysql如何修改密码
|
机器学习/深度学习 人工智能 运维
怎么样把数据治理和人工智能结合起来?
将数据治理和人工智能结合起来,可以提高数据管理的效率和准确性,减少风险和成本。未来,随着人工智能技术的不断发展和应用,数据治理和人工智能的结合将会更加紧密,为企业和社会带来更多的机遇和挑战。
|
缓存 算法 数据处理
Python性能优化:提升代码效率与速度的秘诀
【10月更文挑战第22天】Python性能优化:提升代码效率与速度的秘诀
412 0
|
安全 物联网 开发工具
《哇塞!flux.1 loras 竟如此神奇?十个问题带你揭开它的神秘面纱,开启震撼科技之旅!》
【8月更文挑战第20天】flux.1 LoraS 是一种基于LoRa的远距离、低功耗无线通信技术,适用于物联网领域。它利用扩频技术提升抗干扰性和传输距离,可在智能农业、物流等多种场景中部署。具备远距离传输、低能耗、高可靠性的特点,并支持AES-128加密确保安全通信。开发者可通过特定硬件和软件工具进行开发。随着物联网技术的发展,flux.1 LoraS 展现出广阔的应用前景。
364 2
|
安全 应用服务中间件 Shell
网站在后台启用了https协议之后重新登录就不进去后台的解决方法
网站在后台启用了https协议之后重新登录就不进去后台的解决方法
|
存储 数据格式 Python
如何使用 numpy 加载 txt 文件数据?
【8月更文挑战第30天】
633 0
|
域名解析 负载均衡 网络协议
DNS 的应用场景|学习笔记
快速学习DNS 的应用场景
DNS 的应用场景|学习笔记
|
弹性计算 安全 网络安全
阿里云服务器安全组开放宝塔面板端口教程
阿里云服务器安装宝塔面板后,在云服务器ECS安全组开放宝塔面板8888、888、80、443、20和21端口号
4064 0
阿里云服务器安全组开放宝塔面板端口教程
|
算法 计算机视觉 Python
OpenCV高斯滤波器、双边滤波器的讲解与实战(附Python源码)
OpenCV高斯滤波器、双边滤波器的讲解与实战(附Python源码)
785 0