vue插件开发toast

更新日期: 2020-07-16 阅读: 2.8k 标签: 插件

前言

在没有封装插件之前,如果不使用第三方插件,那么很多情况下我们会编写几个常用的组件来提供给页面使用,如Alert/Loading组件,而你可能需要在很多页面中引入并且通过components注册组件,但是像这样使用率很高的组件一般我们希望全局注册后直接就可以在相应页面使用,因此我们需要将他们封装成插件,这里我们编写一个toast全局提示插件来作个简单的介绍


插件

插件通常用来为 vue 添加全局功能。插件的功能范围没有严格的限制——一般有下面几种:

  1. 添加全局方法或者 property。
  2. 添加全局资源:指令/过滤器/过渡等。
  3. 通过全局混入来添加一些组件选项。
  4. 添加 Vue 实例方法,通过把它们添加到 Vue.prototype 上实现。
  5. 一个库,提供自己的 api,同时提供上面提到的一个或多个功能。

vue插件的编写方法一般分为以上5类,其注册与绑定机制如下:

export default {
install(Vue, options) {
Vue.myGlobalMethod = function () { // 1. 添加全局方法或属性,如: vue-custom-element
// 逻辑...
}
Vue.directive('my-directive', { // 2. 添加全局资源:指令/过滤器/过渡等,如 vue-touch
bind (el, binding, vnode, oldVnode) {
// 逻辑...
}
...
})
Vue.mixin({
created: function () { // 3. 通过全局 mixin方法添加一些组件选项,如: vuex
// 逻辑...
}
...
})
Vue.prototype.$myMethod = function (options) { // 4. 添加实例方法,通过把它们添加到 Vue.prototype 上实现
// 逻辑...
}
}
}

上方代码使用了es6部分语法列出了4种编写插件的方法,而install是注册插件主要调用的方法,包含了两个参数(Vue实例和自定义配置属性options)


开发插件

我们这里主要使用的是第四种方法,将我们的插件函数注册到Vue.prototype实例上面,首先我们在plugin里创建个toast文件夹用来放置插件,里面包含两个文件,toast.vue和toast.js

然后在编写我们的样式结构文件toast.vue
这里我们使用了一个visible变量来控制提示框的显示,message为提示的消息

<template>
<div v-if="visible">
<div>{{message}}</div>
</div>
</template>
<script>
export default {
data() {
return {
visible: false,
message: ""
};
}
};
</script>

接着在toast.js里面编写插件的方法与处理函数

import ToastComponent from './toast.vue'    //引入toast.vue组件

export default { // 导出一个对象,里面包含vue注册插件所调用的方法install
install: function (Vue) {
const ToastConstructor = Vue.extend(ToastComponent) // 将toast.vue组件生成为Vue的子类
const instance = new ToastConstructor(); // 生成一个该子类的实例

instance.$mount(document.createElement('div')) // 将这个实例挂载在新创建的div上,并加入到body中
document.body.appendChild(instance.$el)

// 通过Vue的原型注册一个方法$toast,有两个参数(msg为提示的文字,duration为延时关闭)
Vue.prototype.$toast = (msg, duration = 1500) => {
if (instance.visible) return; // visible是toast.vue组件的一个变量,用来控制提示框的显示

instance.message = msg;
instance.visible = true;

setTimeout(() => { // 默认延时1.5s关闭提示框
instance.visible = false;
}, duration);
}
}
}

这样我们就完成了组件的封装,是不是很简单


使用插件

现在把我们封装好的插件引入到main.js中

import toast from './plugin/toast'
Vue.use(toast);

然后我们就可以在组件中使用它了

this.$toast('提示文字')

我们现在把toast.vue添加上样式和过度效果,让它看起来更加的友好,以下是toast.vue文件的全部内容

<template>
<!-- 全局提示框 -->
<transition name="slide-fade">
<div v-if="visible" class="dialog-tips">
<div>{{message}}</div>
</div>
</transition>
</template>
<script>
export default {
data() {
return {
visible: false,
message: ""
};
}
};
</script>
<style scoped>
.dialog-tips{
min-width: 380px;
box-sizing: border-box;
border-radius: 4px;
border: 1px solid #e1f3d8;
position: fixed;
left: 50%;
top: 20px;
transform: translateX(-50%);
background-color: #f0f9eb;
overflow: hidden;
padding: 15px 15px 15px 20px;
display: flex;
align-items: center;
color: #67c23a;
}

.slide-fade-enter, .slide-fade-leave-to {
margin-top:-30px;
opacity: 0;

}

.slide-fade-enter-active,.slide-fade-leave-active {
transition: all .3s ease;
}

.slide-fade-enter-to,.slide-fade-leave {
margin-top:0px;
opacity:1;
}
</style>


本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://fly63.com/article/detial/9581

相关推荐

基于Vue的验证码插件vue2-verify

在我们Web项目开发中,验证码是一种比较常见的区分用户是计算机还是人的手段。主要是为了保证项目的安全。现在Vue开发的项目很多,基本都是前后端分离的。给大家推荐一个基于Vue比较好用的验证码插件vue2-verify。但是大家要注意一点

video.js使用技巧

Video.js初始化有两种方式;一种是在<video>标签里面加上。注意,两者缺一不可。刚开始的时候我觉得后面的值为空对象{},不放也行,导致播放器加载不出来,后来加上来就可以了。

前端最常用的vscode插件集

在前端开发中,使用Visual Studio Code有哪些你常用的插件?推荐几个自己喜欢的,不带链接,自己搜索安装吧。这些都是比较实用、前端必备的插件集

vue开发常用第三方插件总结

这篇文章整理vue开发中常用插件及工具,主要包含: UI组件、开发框架、实用库、服务端SSR、辅助工具、应用实例、Demo示例等,分享给大家,希望对大家有所帮助

浏览器插件_常用谷歌浏览器插件推荐

常用谷谷歌浏览器确实没有其它国产软件的内置功能丰富。但是 Google 浏览器的的优点恰恰就体现在拥有超简约的界面,以及支持众多强大好用的扩展程序,用户能够按照自己的喜好去个性化定制浏览器。今天我就给大家介绍几款自己常用的插件。

对于前端开发,整理推荐好用的chrome插件或应用

向web前端开发者整理提供的chrome插件或应用:比如Postman、JSON Viewer、Page Ruler 、ChromeADB 等等

sublime安装插件

安装Sublime text 2插件很方便,可以直接下载安装包解压缩到Packages目录,也可以安装package control组件,然后直接在线安装

vue项目中使用新手引导功能_intro.js

如何在vue项目中使用用intro.js新手引导功能呢?这里需要使用到vue-introjs插件,vue-introjs是在Vue中绑定intro.js所使用的。在使用vue-introjs前,需要先安装intro.js

使用原生js开发插件的实现方法

作为前端开发,我们都习惯使用一些开源的插件例如jquery工具库,那么如何使用原生js来开发封装一个自己的插件呢?接下来就看一下怎么去开发一个自己的js插件,先上代码

vue项目中vscode格式化配置和eslint配置冲突

使用vscode开发vue项目的时候,从远端拉下一个新的项目后,安装完依赖后跑起项目时,发现直接报了一堆语法错误:包括换行、空格、单双引号、分号等各种格式问题

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!