Vue组件开发
程序员文章站
2022-04-24 10:33:40
在学习 的时候,发现有很多使用 开发的ui组件。本着学习的目的,自己也仿照 "Element" 写一些组件。 使用 "VuePress" 编写组件文档。 单元测试: +`mocha chai sinon`。 文档预览地址: "预览链接" 使用 编辑文档的代码访问: "组件文档" 关于 使用方法: " ......
在学习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>
完整代码请访问:
上一篇: iOS 好文源码收藏