组件库|青训营笔记

128 阅读4分钟

什么是组件?

在传统工业中是:具有标准接口和某种功能且可复用的标准零部件

在计算机科学中是:封装好的可复用的程序的“零部件”

前端ui组件:“按钮” “输入框”“下拉选择”都是组件,组件和组件的组合就变成了一个更复杂的组件

组件库:一系列UI组件的合集

意义:提供统一的标准化规范,来指导产品事件(一致性、效率、协同)

组件库的使用

引入组件库:

同时安装react>=16.8 react-dom>=16.8

npm i @arco-design/web-react

安装按需加载插件babel-plugin-import

yarn add babel-plugin-import -D 修改Babel配置,引入插件

主题定制

主题色修改:

通过css进行样式覆盖

修改less变量

组件精细化调整:button:带有投影效果 input:面性==> 线性

在使用less来书写样式,同名的变量,后面的会覆盖前面的

-会把可能需要变化的样式定义成样式变量,并告诉使用者相关的变量名

-提供.less类型的样式引入方式

Arco Pro:

预装环境: >npm i -g arco-cli

项目初始化: > arco init hello-arco-pro

项目开发:

cd hello-arco-pro yarn dev 使用Codemod代码迁移工具进行旧项目迁移

自定义组件:

-业务组件库搭建

1.架构设计

-单包架构:如果你选择把所有的组件看成一个整体,一起打包发布,这叫做单包架构。单个仓库,单个包,统一维护统一管理

-多包架构:多包架构的每个组件彼此独立,单独打包发布,单个仓库多个包,统一维护单独管理。

2.技术方案:

开发环境:

-打包速度

-实时预览:storybook

样式方案:

-less/sass ,css in js ,css

-组件库换肤,样式定制

产物构建:

-构建工具webpack ,rollup, vite, gulp

-产物格式:cjs,umd,es

质量保障:

-测试工具:jest,karma,mocha,enzyme,react-testing-library

-测试类型:单元测试,快照测试,截屏测试,e2e测试

组件开发

3.对外文档

文档部署:

-demo展示umijs

-静态内容:markdown

组件api生成:

-手写

-自动提取te-docuemnt

版本日志:

-手写

-自动提取:从PR提交记录自动提取@arco-design/changelog

什么是好的组件?

高内聚,低耦合:高内聚是指一个软件模块是由相关性很强的代码组成,只负责一项任务,也就是常说的单一责任原则。而低耦合是指一个完整的系统,模块与模块之间,尽可能的使其独立存在,减少不同功能或模块之间紧密关系。高内聚和低耦合可以保证服务的独立性以及系统的灵活度

通用性,易拓展

组件开发-组件组织的好与坏

1.语义化命名:组件的命名应当具有语义,并且避免与基础组件冲突,同一团队/仓库下的业务组件,也可采用相同的命名前缀

2.包名和组件名一致:NPM包名应当尽量与组件名保持一致,包含明确的使用场景信息

3.单独维护类型组件:推荐将需要对外导出的TS类型维护在单独的interface.ts中,并将其在index.ts中导出

组件开发-组件设计的好与坏

1.接口定义:在为组件定义接口类型时,应继承原生DOM(或基础组件)属性,避免属性遗漏或重复声明

2.类名前缀统一:组件使用特殊且统一的类名前缀,尽量降低与用户类名冲突的可能性

3.避免行内样式和css modules: 确保外部可通过类名进行样式覆盖

4.避免在js中直接引入样式文件: 应尽量保证逻辑与样式的分离,确保用户可以分别引入js和css文件,避免由于构建环境的不同导致的用户编译失败的问题

5.注意组件样式的按需加载: 在基于基础组件库如Arco进行业务组件的逻辑封装时,应注意按需引入所依赖的Arco基础组件的样式文件