个人对组件的分类
-
基础组件
即不带业务, 纯样式、功能型组件
-
业务组件
融入业务逻辑, 通常还分为两种: 一种根据公司业务封装的常用可复用组件; 一种以拆分业务代码减少单文件代码量的拆分型组件
如何识别组件
1、首先需要识别是否有复用的可能, 几率是否大。如果复用几率不大那么就和基础组件无缘 2、第二识别复用颗粒度, 是样式复用、小模块功能复用(选择框、上传图片之类的)、大模块复用(大模块基本难以服用, 大概率被识别到无法复用, 属于业务型以拆分为目的的组件)
如何写好组件
- 纯样式: 把所有所有字段都由外部传入展示, 而不是直接一个对象
- 功能型(select之类):完成基础功能, 对外暴露prop和event;考虑实际业务的多变性。
- 业务组件(复用型):通常是遇到事件业务才会出现。这种很容易贴着当前业务写组件,导致复用性比较差。 比如上传图片: 只会上传一张, 一些限制。
- 首先识别业务类型, 上传文件(而不是上传图片, 一定要识别一个大类型, 而不是一个类型下的分支)
- 完成基础上传功能
- 通常上传基本基于组件库的上传组件封装, 需要暴露基础组件自身的所有prop和event
- 提供便利的功能(比如, 图片通常前后交互数据[url, url], 组件的数据基本是[{url}, {url}],那么是不是可以提供两种数据结构选项呢, 默认输出的是和实际业务一种格式的, 同时更改prop传入的值, 也可以输出原始的组件的值, 以便应对业务的多变性)
- 那么这个组件就能上传各种文件了, 下次有视频, 音频或者其他的。
- 扩大应用范围,才能使组件在项目中的使用频次增加, 从而获得一项被认可的业绩
遇到一个小可爱说, 你这个卡片组件为什么要有那么多prop, 而不是一个对象传进去, 这样我改一下, 多个地方同时都改了。
这种通常小项目, 初期项目会是这样, 但是移动端卡片组件通常就那几样, 对于长期迭代项目来说, 相同的卡片使用的场景会逐渐增多, 那么每个接口出现字段不一致的情况也会越来越多。 相比于重写个card样式, 在项目开发时, 服务端告诉你这个字段修改了, 你去换几个地方的字段而已, 显然再写一个card的时间要长的多