美文网首页vue
Vue自定义插件

Vue自定义插件

作者: 谢炳南 | 来源:发表于2019-06-10 17:40 被阅读0次
当我们引用一些框架有时候会遇到Toast({message:'message'});或者this.$toast({message:'message'});等直接全局调用,而不需要像组件一样还要定义模板
注:这里只提供思路,具体花里胡哨样式特效自己把握

Toast({message:'message'}) 实现

  1. 在components下新建Toast文件夹,然后新建一个toast.vue
<template>
    <div id="toast">
        <div>加载中{{ message }}</div>
    </div>
</template>
<style>
    #toast{
        position: fixed;
        left: 0;
        right: 0;
        top: 0;
        bottom: 0;
        background-color: rgba(0, 0, 0, 0.5);
    }
</style>
<script>
export default {
    props: {
        message: {
            type: String,
            default: ''
        }
    },
}
</script>
  1. 在新建Toast里新建一个toast.js
import Vue from 'vue';
import Toast from './toast.vue'

let Toast = (options = {}) => {
    let ToastConstructor = Vue.extend(Toast);
    let instance = new ToastConstructor({
        el: document.createElement('div')
    });
    // 此处为传递到toast.vue里面props的值
    instance.message='123';
    document.body.appendChild(instance.$el);
}
export default Toast
  1. 然后代码里面就可以调用
import Toast from '@/components/Toast/toast.js'
...
Toast({
  message:"123"
});
...

this.$toast({message:'message'})实现

  1. 第一步和上面的第一步一样
  2. 在新建Toast里新建一个toast.js
import Toast from './toast.vue'

export default {
    install: function(Vue){
        Vue.prototype.$toast = function(){
            let ToastConstructor = Vue.extend(Toast);
            let instance = new ToastConstructor();
            // 此处为传递到toast.vue里面props的值
            instance.message='123';
            instance.$mount();
            document.body.appendChild(instance.$el);
        }
    }
}

2.或者这种写法,等价于上面

import Vue from 'vue';
import Toast from './toast.vue'

let Toast = (options = {}) => {
    let ToastConstructor = Vue.extend(Toast);
    let instance = new ToastConstructor({
        el: document.createElement('div')
    });
    // 此处为传递到toast.vue里面props的值
    instance.message='123';
    document.body.appendChild(instance.$el);
}
export default {
    install: function(Vue){
        Vue.$toast = Vue.prototype.$toast = Toast;
    },    
    Toast
}
  1. 在main.js全局注册,然后即可
import Toast from '@/components/Toast/toast.js'
Vue.use(Toast);

相关文章

  • Vue2.0双向绑定源码分析

    A:vue的双向绑定 B:vue自定义插件 C:vue混入

  • Vue插件

    官网插件地址官网自定义指令参考文章参考文章 一、Vue插件介绍 理解插件与组件 一个Vue插件可以是一堆Vue组件...

  • Vue.js插件书写规范

    Vue插件书写规范,导出install方法 使用时,可以通过以上主流写法将自定义插件挂载到Vue上面: 闭包里ex...

  • Vuex 原理

    1、Vue.use(Vuex):将Vuex 应用到Vue中 use是一个自定义插件,这个插件里有一个固定方法ins...

  • Vue3.x

    一. 项目搭建及自定义脚手架模板 二. 添加插件 vue add eg:vue add vuetify 2.x版...

  • vue全局API和使用方法

    Vue.use(plugins) 注册一个插件 例子: Vue.directive()创建或者获取自定义指令 一个...

  • VSCODE配置vue模板

    VSCode -vue项目,自定义.vue模版 1.安装vscode vscode官网地址: 2.安装一个插件,识...

  • Capacitor实现WebView中访问的自定义Android

    前言 Capacitor 自定义插件 实现WebView中访问的自定义Android代码 最近在工作中使用Vue+...

  • vue高级用法

    Vue 插件 plugin 1, Vue 插件 plugin 安装 Vue.js 插件。如果插件是一个对象,必须提...

  • vue 高级功能

    主要可以分为4part: 过渡 自定义指令 mixins 插件 过渡 transition 是vue提供的内置的组...

网友评论

    本文标题:Vue自定义插件

    本文链接:https://www.haomeiwen.com/subject/tnctfctx.html