设计组件库好处是什么?html
- 设计组件库能提升协做效率。(这是站在研发效率和时间成本的角度)
- 设计组件库能成为公司的技术资产,新同事来公司后能够快速调用和上手,就算有同事离职,也不会对产品的总体体验形成影响。(这是站在公司招聘成本的角度)
- 设计组件库可让产品体验统一,有助于公司创建统一的产品品牌认知,方便销售和运营包装、运营、策划产品方案。(这是站在销售运营部门的角度)
咱们基于公司项目UI作定制化的组件库具体在作什么?前端
一、样式上:基于开源框架的组件封装成公司的产品UI设计的特有样式的组件,以及封装经常使用的布局样式。
二、功能上:沉淀开源框架中没有的经常使用组件。
容器型组件(Container)与展现型组件(stateless)
前者关注逻辑,后者关注视图UI,二者的区别,3个方面来详情区分:关注点、数据源、组织形式。react
展现型组件好比:一个菜单栏组件,接收props传递的数据,只用来渲染数据展现UI。antd
import React from 'react' import 'antd/es/menu/style' import { Menu } from 'antd' import { MenuProps } from 'antd/lib/Menu' import './side-menu.less' import { colorMap } from './util' class SideMenu extends React.PureComponent<MenuProps, any\> { render() { const { ...other } = this.props const props: any = this.props let header = null let theme = props.titleTheme let styleName = colorMap\[theme\] ? colorMap\[theme\] : colorMap\['default'\] if (props.title) { header = ( <div className\={\`side-menu-title ${styleName}\`}\> <span\>{props.title}</span\> </div\> ) } return ( <div className\="panda-side-menu"\> {header} <Menu {...other} style\={{ flex: 'auto', overflowY: 'auto' }}\> {props.children} </Menu\> </div\> ) } } export default SideMenu
容器组件好比:一个带搜索功能的Tree组件,由多个展现组件构成,同时包含了获取tree数据源的请求逻辑。框架
分离逻辑和视图的主要方式有:less
布局组件和内容组件ide
基于antd二次封装组件或自定义antd没有的组件。组件化
基于antd二次封装什么?布局
在保证彻底具有原有antd具有的组件功能的状况下封装以下组件:post
通用组件设计原则
单一原则
未完待续。。
参考资料
React组件设计实践总结02 - 组件的组织
如何用项目思惟,从0-1创建设计组件库
前端组件设计原则
React组件化开发