已经很久没有学习新的相关知识,对于今后的学习方向可能会集中在vue的源码,render,jsx语法,服务端渲染来学习,巩固好vue的基础和高级的知识,现阶段vue的api和基本用法已经全部掌握,但是还是要深入学习,不能只知道api而已!

最近的项目中使用了vant的toast提示框,后来ui出图需要使用自己定义的样式,故看了下插件的写法,写了一次toast插件,鉴于需求比较少可能比较简单

首先需要写好页面的模板,布局

  1. <template>
  2. <transition name="fadeIn">
  3. <div class="contain" v-if="show">
  4. <div class="wrap" :class="{active:type == 'success' || type == 'fail'}">
  5. <img src="../../assets/images/successToast.png" v-if="type == 'success'">
  6. <img src="../../assets/images/failToast.png" v-else-if="type == 'fail'">
  7. <div class="text">{{message}}</div>
  8. </div>
  9. </div>
  10. </transition>
  11. </template>
  12.  
  13. <script>
  14. export default {
  15. data(){
  16. return {
  17. type:'',
  18. message:'',
  19. show:false,
  20. }
  21. }
  22. }
  23. </script>
  24.  
  25. <style lang="scss" scoped>
  26. .contain{
  27. width: 100%;
  28. position: fixed;
  29. left: 50%;
  30. top: 50%;
  31. transform: translate(-50%,-50%);
  32. text-align: center;
  33. z-index: 9999;
  34. }
  35. .wrap{
  36. display: inline-block;
  37. max-width: 600px;
  38. background: rgba(0,0,0,.8);
  39. padding: 50px;
  40. border-radius: 10px;
  41. box-sizing: border-box;
  42. color:#fff;
  43. text-align: center;
  44. &.active{
  45. width: 380px;
  46. }
  47. img{
  48. width: 86px;
  49. }
  50. .text{
  51. text-align: center;
  52. font-size: 28px;
  53. word-break: break-all;
  54. }
  55. }
  56. .fadeIn-enter-active, .fadeIn-leave-active{
  57. transition: opacity .3s;
  58. }
  59. .fadeIn-enter, .fadeIn-leave-active{
  60. opacity: 0;
  61. }
  62. </style>

紧接着需要使用vue的install来注册插件,全局插入提示组件,控制显示

  1. import toastComponent from './toast.vue'
  2. const Toast = {};
  3. Toast.install = function (Vue) {
  4. // 生成一个Vue的子类
  5. const ToastConstructor = Vue.extend(toastComponent)
  6. // 生成一个该子类的实例
  7. const instance = new ToastConstructor();
  8.  
  9. // 将这个实例挂载在我创建的div上
  10. // 并将此div加入全局挂载点内部
  11. instance.$mount(document.createElement('div'))
  12. document.body.appendChild(instance.$el)
  13. // 通过Vue的原型注册一个方法
  14. // 让所有实例共享这个方法 // 其中的duration是持续时间
  15. Vue.prototype.$toast = (data,duration = 2000) => {
  16. if(Object.prototype.toString.call(data) == "[object Object]"){
  17. instance.message = data.message;
  18. instance.type = data.type;
  19. instance.show = true;
  20. } else if(typeof(data) == 'string'){
  21. instance.message = data;
  22. instance.show = true;
  23. }
  24. setTimeout(() => {
  25. instance.show = false;
  26. }, data.duration ? data.duration :duration);
  27. }
  28. }
  29. export default Toast

现在基本的功能已经实现,在main.js里面进行注册接全局调用$toast方法来使用tost组件

  1. import toastRegistry from './common/toast/index'
  2. Vue.use(toastRegistry)

实现的页面效果分别如下:

vue简单插件的更多相关文章

  1. VUE图片懒加载-vue lazyload插件的简单使用

    序:vue项目时候,我们要对图片进行懒加载处理,这个开发项目中就不需要自己去写了,因为比较方便使用vue lazyload进行处理,高效率开发 一. vue lazyload插件: 插件地址:http ...

  2. 从零开始实现Vue简单的Toast插件

    在前端项目中,有时会需要通知.提示一些信息给用户,尤其是在后台系统中,操作的正确与否,都需要给与用户一些信息. 1. 实例 在Vue组件的methods内,调用如下代码 `this``.$toast( ...

  3. VUE图片懒加载-vue lazyload插件的简单上手使用(优化版本)

    在用VUE做项目开发的过程中,首页用到了懒加载的方法,查找了一些方法,觉得官网写得太复杂,有一篇博客不错(https://www.cnblogs.com/xyyt/p/7650539.html),但是 ...

  4. vue各种插件汇总

    https://blog.csdn.net/wh8_2011/article/details/80497620(copy) Vue是什么? Vue.js(读音 /vjuː/, 类似于 view) 是一 ...

  5. vue常用插件汇总

    UI-框架element - 饿了么出品的Vue2的web UI工具套件 mint-ui - Vue 2的移动UI元素 iview - 基于 Vuejs 的开源 UI 组件库 Keen-UI - 轻量 ...

  6. Vue简单基础 + 实例 及 组件通信

    vue的双向绑定原理:Object.defineProperty() vue实现数据双向绑定主要是:采用数据劫持结合发布者-订阅者模式的方式,通过 Object.defineProperty() 来劫 ...

  7. vue 常用插件,保存

    UI组件 element- 饿了么出品的Vue2的web UI工具套件 Vux- 基于Vue和WeUI的组件库 mint-ui- Vue 2的移动UI元素 iview- 基于 Vuejs 的开源 UI ...

  8. 一篇文章带你了解网页框架——Vue简单入门

    一篇文章带你了解网页框架--Vue简单入门 这篇文章将会介绍我们前端入门级别的框架--Vue的简单使用 如果你以后想从事后端程序员,又想要稍微了解前端框架知识,那么这篇文章或许可以给你带来帮助 温馨提 ...

  9. 写一个Vue loading 插件

    什么是vue插件? 从功能上说,插件是为Vue添加全局功能的一种机制,比如给Vue添加一个全局组件,全局指令等: 从代码结构上说,插件就是一个必须拥有install方法的对象,这个方法的接收的第一个参 ...

随机推荐

  1. 关于MySQL去除查询结果重复值

    下面先来看看例子: table:  id name  1 a  2 b  3 c  4 c  5 b 库结构大概这样,这只是一个简单的例子,实际情况会复杂得多. 比如我想用一条语句查询得到name不重 ...

  2. 分布式工作流任务调度系统Easy Scheduler正式开源

    分布式工作流任务调度系统Easy Scheduler正式开源 1.背景 在多位技术小伙伴的努力下,经过近2年的研发迭代.内部业务剥离及重构,也经历一批种子用户试用一段时间后,EasyScheduler ...

  3. Mybaits 运行原理流程时序图

    1 .初始化sqlsessionFactory 2openSession 3.getMapper返回接口的代理对象 包含了SqlSession对象 4.查询流程

  4. kaptcha Spring 整合

    转自:http://my.oschina.net/CandyDesire/blog/209364 生成验证码的方式有很多,个人认为较为灵活方便的是Kaptcha ,他是基于SimpleCaptcha的 ...

  5. Delphi XE2 之 FireMonkey 入门(36) - 控件基础: TForm

    Delphi XE2 之 FireMonkey 入门(36) - 控件基础: TForm 当我第一次读取 Form1.StyleLookup 并期待出现 "formstyle" 时 ...

  6. c++ 加载资源文件

    int _tmain(int argc, _TCHAR* argv[]) { HRSRC hRsrc = FindResource(NULL, MAKEINTRESOURCE(IDR_DATA1), ...

  7. cross appdomain access

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  8. YARN日志聚合相关参数配置

    日志聚合是YARN提供的日志中央化管理功能,它能将运行完成的Container/任务日志上传到HDFS上,从而减轻NodeManager负载,且提供一个中央化存储和分析机制.默认情况下,Contain ...

  9. 数据库之DML

    1.表的有关操作: 1.1.表的创建格式: CREATE TABLE IF NOT EXISTS 表名(属性1 类型,属性2 类型,....,属性n 类型):# 标记部分表示可以省略 1.2.表的修改 ...

  10. 【Linux开发】【Qt开发】Qt界面键盘、触摸屏、鼠标的响应设置

    USB键盘 经过一番搜索,发现对Qt键盘的支持主要关系到两个方面: 1. 键盘类型确定: 4.7以前的Qt版本,如果是PS2圆孔键盘,Qt编译时需加上选项:-qt-kbd-vr41xx(未测试):如果 ...