Vue组件开发

作者: qfstudy | 来源:发表于2019-03-10 09:41 被阅读3次

在学习vue的时候,发现有很多使用vue开发的ui组件。本着学习的目的,自己也仿照Element写一些组件。

使用VuePress编写组件文档。

单元测试:karma+mocha+chai+sinon

文档预览地址:预览链接

使用VuePress编辑文档的代码访问:组件文档
关于VuePress使用方法:博客园掘金

完整代码:组件代码

接下来就是编写组件,首先以常用的组件Button为例。

通过props属性接收父组件传递过来的值,并对传递过来的值进行类型验证。

props:{
    type:{
        type: String,
        validator (value) {
            return [
                'primary',
                'success',
                'info',
                'warning',
                'danger'
            ].indexOf(value)>-1;
        }
    },
    iconName:{
        type:String
    },
    iconSize:{
        type:String,
        default:'small'
    },
    iconPosition:{
        type: String,
        default: 'left',
        validator(value){
            return[
                'left',
                'right'
            ].indexOf(value)>-1
        }
    },
    circle:{
        type: Boolean
    },
    disabled:{
        type: Boolean
    }
}

通过 props接收父组件传递的值,可以实现各种功能不一样的button组件。

<template>
    <button @click="handleClick" class="vi-button" :disabled="disabled" :class=buttonClass>
        <span class="vi-button-wrapper" :class=wrapperClass>
            <span v-if="iconName" class="vi-button-icon">
                <vi-icon :viIconName="iconName" :viIconSize="iconSize"></vi-icon>
            </span>
            <span class="vi-button-content">
                <slot></slot>
            </span>
        </span>
    </button>
</template>
 
<script>
export default {
    name: 'ViButton',
    props:{
        type:{
            type: String,
            validator (value) {
                return [
                    'primary',
                    'success',
                    'info',
                    'warning',
                    'danger'
                ].indexOf(value)>-1;
            }
        },
        iconName:{
            type:String
        },
        iconSize:{
            type:String,
            default:'small'
        },
        iconPosition:{
            type: String,
            default: 'left',
            validator(value){
                return[
                    'left',
                    'right'
                ].indexOf(value)>-1
            }
        },
        circle:{
            type: Boolean
        },
        disabled:{
            type: Boolean
        }
    },
    methods: {
        handleClick(event) {
            this.$emit('click', event);
        }
    },
    computed:{
        buttonClass(){
            return {
                [`vi-button-${this.type}`]:this.type,
                [`vi-button-disabled`]:this.disabled,
                [`vi-button-circle`]:this.circle
            }
        },
        wrapperClass(){
            return {
                [`vi-button-${this.iconPosition}`]:this.iconName&&this.iconPosition
            }
        }
    }
}
</script>

完整代码请访问:组件代码

相关文章

  • vue(2)

    Vue组件化开发 组件化开发的思想 组件的注册 组件间的数据交互 组件插槽的用法 Vue调试工具的用法 组件开发思...

  • 如何开发vue、react、angular的组件库教程

    关键词:vue,react,angular,开发,封装,ui组件,组件库,常用组件 目标:开发相应的组件库vue-...

  • Vue磨刀嚯嚯

    Vue开发风格——传统方法应用vue.js Vue开发风格——单个组件式 组件 基本操作 创建一个组件构造器 注册...

  • vue开发组件设置*.vue文件模板

    title: vue组件开发模板date: 2016-11-21 开发模板 规范 本文介绍vue组件开发的模板,在...

  • 五、Vue生态介绍

    一、Vue组件库Vue组件库是使用Vue框架开发的组件,一般包含着开发者可以直接使用的基础组件:表单、弹窗、表格等...

  • vue写调色板

    组件开发App.vue

  • 0.Vue知识学习整理-1_2020-03-17

    一.Vue开发知识体系: 二.Vue知识整理:4.组件通信 Vue.component('组件name',{......

  • node 以及vue环境配置

    写在前面: 这篇文档不涉及vue的语法,单纯是处理laravel中怎么用vue进行组件化开发的(vue组件化开发需...

  • vue系列组件篇(二)

    概述 vue组件是vue常用的功能,vue也因为强大的组件功能得到很多开发者的青睐。一个好的组件,可以提供给开发者...

  • Vue2.x开发饿了么项目(header部分)

    header组件开发 数据之间的传递 App.vue 引入组件,App.vue 中注册组件,使用组件时 要记得传...

网友评论

    本文标题:Vue组件开发

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