Vue-Ui框架 手写实现一个Ui框架级别的 Button组件(初级难度)

简介

我们开始只关注组件的功能实现,不考虑 css 分装、webpack 配置、整体结构设计、单元测试等等,因为在后面会一步一步完善。让大家一起进步,实现一套简单的组件库。

Button组件也是经常用到的,首先我么也要了解Button都有什么功能,一样的可以参考element/iviewbutton功能。再结合我们的业务场景定制一些,适合自己项目的通用组件库。最后我们会把写好的 UI 框架库发布到 npm 中。

本组件的开发步骤和前面breadcrumb基本上一至,因为它们都是比较简单的组件,不需要分成多个模块来编写。大致步骤如下:

  1. 分析button组件功能
  2. 构思代码、编写代码
  3. 测试组件效果,(编写单元测试)

分析组件功能

首先要明确的了解要写的button组件要包含哪些功能,这样更有利于组件整体的构思和实现。如下图所示:

button

状态

在很多ui框架中可以看到它们的button都是有(状态/类型)的,结合自己使用的场景大致分为defalutprimarysuccesswarninginfoerror这个都可以通过通过一个type传入我们的button组件以切换我们组件的状态。

类型

同时有不同类型的按钮类型比如dashedghosttexticonroundcircleloadingdisabled类型。

大小

支持设置大小lgmdsmxs

其他功能

支持路由跳转to,支持replace跳转,支持自动获取原生type属性,同时支持icon传入和自定义icon图标。下面我们就根据上面的的计划一步一步实现功能。

支持设置html标签a标签。

代码实现

首先实现简单的type类型