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)
  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue组件封装和复用是指将代码逻辑和功能封装在一个独立的组件中,并在需要的地方重复使用该组件的过程。 Vue组件封装可以通过以下步骤实现: 1. 创建组件:使用Vue框架提供的组件选项来创建一个组件。可以使用Vue.extend方法或者直接在Vue实例中定义一个组件。 2. 封装功能:在组件中添加业务逻辑、数据和方法等功能。可以通过计算属性、监听器、方法等实现具体的功能。 3. 编写模板:使用Vue的模板语法编写组件的结构和样式。通过将标签、属性和事件绑定到组件的数据和方法来实现交互效果。 4. 注册组件:将组件注册到Vue实例中,使其可以在其他组件中使用。可以使用Vue.component方法全局注册组件,也可以在局部组件中通过components选项注册组件。 5. 使用组件:在需要的地方使用组件,可以通过标签的方式将组件插入到页面中。 通过封装组件,可以将代码逻辑和UI元素进行有效地拆分和复用。例如,可以将页面中重复出现的按钮、表单、卡片等元素封装组件,通过复用组件来提高代码的可维护性和复用性。同时,组件化的思想也使得团队协作更加高效,不同开发者可以独立开发、测试和维护自己负责的组件,最终组合成完整的应用程序。 总之,Vue组件封装和复用是一种有效的开发方式,可以提高代码的可维护性和可复用性,同时也促进了团队协作和开发效率的提升。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值