Vue组件的抽离和封装

1.背景

	日常开发中,有时候有些组件是功能类似甚至完全相同的情况,这个时候我们完全没必要再重新写一个,
可以抽离复用可以减少大量的时间,案例:

在这里插入图片描述

	像一些App底部的标签页,在进行一些标签的跳转时,底部的只是变化选中时的字体颜色和图标,
大部分的元素都相同。

2.抽离思路

2.1先抽出一个大的可以装里面小组件的大容器TabBar
<div class='tabBar'>
   <tab-bar-item v-for="(val,index) in navBar" :path='val.path' fontColor='#009E97'>
       <template v-slot:icon-active>
           <img :src="val.activeImg">
       </template>
       <template v-slot:icon-inactive>
           <img :src="val.inactiveImg">
       </template>
       <template v-slot:text>
           {{val.name}}
       </template>
   </tab-bar-item>
  
 </div>
2.2实现里面各个小组件,这里要用具名插槽
<div class='tabBarItem' @click="itemHandle">
   <div v-if="iconActive">
     <slot name="icon-active"></slot>
   </div>
   <div v-else="!iconActive">
     <slot name="icon-inactive"></slot>
   </div>
   <div :style="changeColor" class="text">
     <slot name="text"></slot>
   </div>
 </div>
 因为底部的标签页跳转是要更换图标,因此可以用v-if,v-else来控制显示。
2.3要使得这类组件具有通用性和复用性,有些数据是不能写死的。
								tabBarItem.vue
props: {
   path: String,
   fontColor: {
     type: String,
     default: "#A3A3A3",
   },
 },
	我们可以在tabBar通过传递path,fontColor来改变里面子组件相关的属性,更多的属性可以
视情况而定
2.4根据路由跳转来对比父组件传进来的路径,可以得出哪个标签点击。
 computed: {
    //根据路由判断图标的激活状态
    iconActive() {
      return this.$route.path === this.path;
    },
    changeColor() {
      //标签页点击了则进行 判断,改变对应点击的字体颜色
      if (this.$route.path === this.path) {
        return { color: "#009E97" };
      } else {
        return { color: "#A3A3A3" };
      }
    },
  },
  methods: {
    itemHandle() {
      this.$router.push(this.path);
    },
  },

3.优点

1.节省时间,减少代码
2,组件利用率高,适用性广
3.减少代码的堆积,代码模块化,便于维护和修改
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 实现Vue组件封装需要遵循以下步骤: 1. 定义组件的模板:使用template标签,并在其中定义组件的布局和功能。 2. 定义组件的数据:使用data选项,定义组件的数据和状态。 3. 定义组件的方法:使用methods选项,定义组件的行为和功能。 4. 定义组件的计算属性:使用computed选项,定义组件的计算属性,用于动态计算和渲染数据。 5. 定义组件的生命周期钩子:使用生命周期钩子,定义组件在不同的生命周期阶段执行的操作。 6. 定义组件的props:使用props选项,定义组件的props,以实现父组件和子组件之间的数据传递。 7. 封装组件:使用Vue.component方法,将组件封装为一个可重用的组件。 以上是Vue组件封装的基本流程,您可以根据具体需求选择适当的选项,并通过组合不同的选项来实现复杂的组件封装。 ### 回答2: 实现Vue组件封装的方法有以下几个步骤: 1. 创建一个Vue组件:首先需要定义一个Vue组件的模板,可以使用template标签来描述组件的外部结构,并在内部定义组件的样式和交互逻辑。然后使用Vue.component方法将模板和组件绑定。 2. 定义组件的props:通过props选项,可以定义组件接受的外部数据,这样可以实现组件的可配置性。在模板中使用props来接收传递的数据,并在组件中使用。 3. 封装组件的功能:根据组件的需求,可以在组件中添加各种方法和事件处理逻辑,实现组件的具体功能。可以使用Vue的生命周期钩子函数,在合适的时机执行逻辑。 4. 提供默认值和插槽:通过使用default属性设置props的默认值,可以保证即使没有传递相关数据,组件也能正常运行。另外,封装组件还可以通过使用插槽机制,让父组件可以自定义子组件的部分内容。 5. 配置组件的参数:在使用组件的时候,可以通过prop的方式向组件传递数据,还可以通过事件的方式和组件进行通信。可以通过v-bind指令绑定数据和props,并使用v-on指令监听事件。 6. 组件的复用和拓展:通过封装组件,可以实现组件的复用和拓展。复用可以通过在不同的地方使用组件实例来实现,而拓展可以通过对组件进行继承和扩展来实现。 总结:通过以上步骤,我们可以实现Vue组件封装,使组件具有独立的功能和样式,并可以在不同的地方进行复用和拓展。组件封装可以提高代码的可读性和可维护性,方便团队开发和项目的扩展。 ### 回答3: Vue组件封装是一种将组件的功能、样式和状态进行封装,使其具有可复用性和灵活性的方法。下面是实现Vue组件封装的一些步骤和技巧: 1. 组件功能:首先确定组件所要完成的功能,然后根据功能对组件进行拆分和象。可以将常用的组件功能封装成独立的子组件,然后在需要使用这些功能的地方引用。 2. 设计组件接口:在组件封装中,组件接口非常重要。通过props属性传递数据给组件,通过$emit方法触发事件反馈给父组件。通过这种方式,可以实现组件组件之间的通信,提高组件的复用性。 3. 样式封装:将组件的样式封装到独立的style文件中,以便在需要的时候引入。可以使用相对路径或者绝对路径引入样式文件。 4. 状态管理:对于具有复杂交互和数据状态的组件,可以使用Vuex进行状态管理。将组件的数据存放在Vuex的store中,通过mutations和actions进行数据的修改和操作。这样可以使得组件解耦,提高代码的可维护性。 5. 内容插槽和作用域插槽:Vue提供了内容插槽和作用域插槽的功能,可以使组件更具灵活性。内容插槽可以在组件内部插入其他组件或者HTML代码,实现内容的可定制化。而作用域插槽可以将父组件的数据传递给子组件进行处理,方便复用。 6. 组件继承和混入:如果有多个组件需要共享一些相同的逻辑和功能,可以使用组件继承和混入的方式进行封装。通过继承可以将父组件的功能和属性传递给子组件,实现代码的复用。而混入可以将公共的逻辑代码离出来,供多个组件共享。 通过上述的步骤和技巧,可以实现Vue组件封装,提高组件的可复用性和灵活性,使代码更加清晰易懂、可维护性更高。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值