美文网首页vueVue技术vue
插件方式的组件封装

插件方式的组件封装

作者: 大佬教我写程序 | 来源:发表于2021-07-31 20:48 被阅读0次
    • 原理就是把组件对象挂载到在body上创建出来的一个空 div
      原理

    步骤(以创建一个Toast)

    • 创建一个vue文件,写入想要封装的组件(这里以toast弹出框为例),调整组件样式
    <template >
      <div class="toast">
        <div>{{message}}</div>
      </div>
    </template>
    <script>
    export default {
      name:"Toast",
      data() {
        return {
          message:'',
          isShow:false
        }
      },
      methods: {
        show(message = "message",duration=2000){
        this.isShow = true
        this.message = message
        setTimeout(()=>{
          this.isShow = false
        this.message = ''
        },duration)
      }
      },
    }
    </script>
    <style scoped>
      .toast{
        position: fixed;
        top: 50%;
        left: 50%;
        color: #fff;
        background-color: rgba(0, 0, 0, 0.5);
      }
    </style>
    
    • 创建js文件,导入创建好的组件,新建一个对象

    • 创建组件构造器

    • new的方式,根据组件构造器,可以创建出来一个组件对象

    • 将组建对象手动挂载到某一元素上

    • toast.$el对应的就是对应的div上的

    • 将组件对象放在Vue原型

    import Toast from './Toast.vue'
     
    const obj = {}
     
    obj.install = function(Vue){
      //创建组件构造器
      const toastContrustor = Vue.extend(Toast)
      //new的方式,根据组件构造器,可以创建出来一个组件对象
      const toast  = new toastContrustor()
      //将组建对象手动挂载到某一元素上
      toast.$mount(document.createElement('div'))
      //toast.$el对应的就是对应的div上的
      document.body.appendChild(toast.$el)
      
      Vue.prototype.$toast = toast
    }
    export default obj
    
    • 在main.js文件中导入上面的js文件,使用插件,挂载到页面上
    import Toast from 'components/common/Toast/index.js'
     
    Vue.use(Toast)
    new Vue({
      render: h => h(App),
      router,
      store
      
    }).$mount('#app')
    
    • 使用
    this.$toast.show(res,2000)
    

    相关文章

      网友评论

        本文标题:插件方式的组件封装

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