我是靠谱客的博主 缓慢黑米,最近开发中收集的这篇文章主要介绍Vue 组件的高级封装模式,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、传统模式

我们在使用 vue 进行项目开发过程中,对组件的封装是不可避免的,组件式开发在很大程度上提高了代码的复用性,能够提高开发效率。一般情况下,我们使用最基础的封装模式,基本流程如下:

  1. 创建 Xxx.vue 文件,对组件进行封装
  2. 通过 import 的方式将组件导入 import Xxx  from  '...'
  3. 对组件进行注册 componments:{ Xxx } 
  4. 使用组件:<xxx/>

示例:封装一个 Toast 弹窗组件

1.创建 Toast.vue 文件

<template>
  <div class="toast" v-show="show">
      <div>{{message}}</div>
  </div>
</template>

<script>
export default {
name:"Toast",
props:{
    message:{
        type:String,
        default:''
    },
    show:{
        type:Boolean,
        default: false
    }
}
}
</script>

<style>
.toast{
    position: fixed;
    top:50%;
    left: 50%;
    transform: translate(-50%,-50%);
    padding: 8px 10px;
    border-radius: 10%;

    z-index: 99;

    color: white;
    background-color: rgba(0,0,0,.75);
}
</style>

2.导入组件

import Toast from 'components/common/toast/Toast'

3.注册组件

export default {
  name:"Detail",
  components:{
    Toast
  }
}

4.使用组件

<toast :message="message" :show="show"  />

运行效果:

这种封装模式在使用起来比较麻烦,主要体现在组件的导入、注册和使用方面,特别是涉及到不同组件之间的控制和使用,需要组件之间进行各种通信。

二、高级模式

组件封装的高级模式:通过插件安装的方式对组件进行封装。在使用时只需要一次调用即可:

this.$toast(message,1000)

具体步骤如下:

1.创建组件 Toast.vue:

<template>
  <div class="toast" v-show="isShow">
      <div>{{message}}</div>
  </div>
</template>

<script>
export default {
name:"Toast",
data(){
    return{
        message:'',
        isShow:false
    }
},
methods:{
    show(message='默认文字', duration=2000){
      this.isShow = true;
      this.message = message;
      setTimeout(() => {
          this.isShow = false;
          this.message = ''
      },duration)

    }
}
}
</script>

<style>
.toast{
    position: fixed;
    top:50%;
    left: 50%;
    transform: translate(-50%,-50%);
    padding: 8px 10px;
    border-radius: 10%;

    z-index: 99;

    color: white;
    background-color: rgba(0,0,0,.75);
}
</style>

2.在组件的同级目录下创建 index.js 文件:

import Toast from './Toast'
const obj = {}
obj.install = function(Vue){//默认传入 Vue
    //1. 创建组件构造器
    const toastContrustor = Vue.extend(Toast)
    
    //2. new 的方式,根据组件构造器,可以创建出来一个组件对象
    const toast = new toastContrustor()

    //3.将该组件对象手动挂载到某一个 div 上
    toast.$mount(document.createElement('div'))

    //4. toast.$el 对应的就是上面创建的 div
    document.body.appendChild(toast.$el)

    //5. 添加到原型
    Vue.prototype.$toast = toast
}

export default obj

3.在 main.js 文件中添加如下内容:

import toast from './components/common/toast'

Vue.use(toast)//安装插件,执行导入文件中的 install 函数

 4.使用

this.$toast.show(res,1000)

最后

以上就是缓慢黑米为你收集整理的Vue 组件的高级封装模式的全部内容,希望文章能够帮你解决Vue 组件的高级封装模式所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部