vue element-ui之怎么封装一个自己的组件

为什么要进行组件封装?

封装的目的就是为了能够更加便捷、快速的进行业务功能的开发。组件(component)是vue的最强大功能之一,组件可以实现一些类似功能的复用及与其它业务逻辑的解耦。在开发中,我们难免会写很多类似的、重复的代码,有时候两个业务模块有相似的功能,采用复制粘贴已经很省事,但如果涉及的字段或有一些小差别,你也会觉得很烦,毕竟你要从头到尾瞅着去改动。这时候如果把那些相同的功能,抽象出来抽离成组件,通过组件引用方式就会显得格外省事了。

Vue中怎么封装一个自己的组件

想要封装好一个组件,必须要熟练掌握的三个技能:1.父组件传值到子组件(props) 2.子组件传值到父组件($emit)3.插槽使用(slot)。对于一个独立的组件,props是用来为组件内部注入核心内容;$emit用来使这个组件通过一些操作来融入其它组件中。

使用Vue做开发,想必你一定会使用vue-cli这个脚手架,同时想必你一定会使用element-ui这个大名鼎鼎的前端框架。本文就以vue-cli来介绍一下怎么封装自己的组件。下面就以后续要介绍的一个封装的组件为例,来为大家介绍:

1.首先,可以看到前端工程下有一个components目录,在components下新建一个文件夹xx-button,再在xx-button下创建一个index.vue文件,如图:

2.然后在index.vue中写自己的代码。为了规范,注意代码中的name命名XxButton,以后使用的组件就是XxButton:

<template>
  <el-button-group>
    <el-button v-for="(btn,index) in this.buttons" :key="index" :type="btn.type ? btn.type:'primary'"
      :icon="btn.icon" :size="btn.size?btn.size:'mini'" @click="btn.click">{{btn.label}}</el-button>
  </el-button-group>
</template>

<script>
export default {
  name: 'XxButton', // 注意这里的name命名,就是你以后封装好后使用的组件名
  props: {
    buttons: {
      type: Array,
      required: true
    }
  }
}
</script>

3.然后在components下还有一个index.js文件,咱们要在index.js中注册上自己定义的组件:

import XxButton from './xx-button'

Vue.component(XxButton.name, XxButton)

如图所示:

注意:这个index.js也一定要在main.js中引入,不然就无法使用。当然,你也可以直接在main.js中直接注册组件,这里为了便于组件的统一管理,就在components下建了一个index.js来统一注册组件。

4.最后,在页面开发中,就可以愉快的使用我们注册的组件啦。

this.buttons的定义如下:

对element-ui组件进一步封装介绍

以上是对怎么封装自己的组件做了一个简单的demo介绍,后续我将会对工作中经常使用的组件进行封装介绍,主要针对element-ui做二次封装,由浅入深,先介绍一些简单的比如:按钮组件封装、分页组件封装、详情页面封装、Dialog对话框封装,然后对Form表单封装、简单表格封装,最后结合前面封装的组件再封装一个功能齐全的组件。当然在实际开发中,并不是所有的业务功能完全与组件功能契合,这就需要组件具有更多的扩展性,后续的内容中也会对组件封装过程中怎么提高扩展性做介绍。

好了,今天就先到这吧,好饿啊,睡觉了

  • 12
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
好的,以下是一个使用 VueElement-UI 实现的亚运会倒计时: 1. 首先,需要安装 VueElement-UI: ```bash npm install vue npm install element-ui ``` 2. 在 Vue 组件中引入 Element-UI 的倒计时组件和样式: ```vue <template> <div class="countdown"> <el-countdown :time="countdown" :auto-start="false" @finish="handleFinish"> <span slot="days">{{ days }} 天</span> <span slot="hours">{{ hours }} 时</span> <span slot="minutes">{{ minutes }} 分</span> <span slot="seconds">{{ seconds }} 秒</span> </el-countdown> </div> </template> <script> import { ElCountdown } from 'element-ui' export default { components: { ElCountdown }, data() { return { countdown: 0 } }, computed: { days() { return Math.floor(this.countdown / (24 * 60 * 60 * 1000)) }, hours() { return Math.floor((this.countdown % (24 * 60 * 60 * 1000)) / (60 * 60 * 1000)) }, minutes() { return Math.floor((this.countdown % (60 * 60 * 1000)) / (60 * 1000)) }, seconds() { return Math.floor((this.countdown % (60 * 1000)) / 1000) } }, methods: { startCountdown() { const endDate = new Date('2022-09-10T00:00:00.000Z') const now = new Date() this.countdown = endDate - now }, handleFinish() { console.log('倒计时结束') } }, mounted() { this.startCountdown() } } </script> <style> .countdown { display: flex; justify-content: center; align-items: center; height: 100vh; font-size: 24px; } </style> ``` 3. 在组件中定义一个倒计时的结束时间(即亚运会的开幕时间),并使用计算属性将倒计时的毫秒数转换为天、小时、分钟和秒。 4. 在组件的 mounted 钩子函数中调用 startCountdown 方法,该方法会计算倒计时的毫秒数并将其赋值给 countdown 变量。 5. 最后,将倒计时组件添加到模板中,并设置好样式即可。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值