组件库的使用和自定义组件 | 青训营笔记

224 阅读5分钟

组件库的使用和自定义组件

1. 组件库介绍

组件:
部件 元件 构件 组成 分枝
工业品组件:
具有标准接口和某种功能且可复用的标准零部件。

组件库介绍-组件

软件组件:封装好的可复用的程序“零部件”
前端 UI 组件: “按钮”、“输入框”、“下拉选择”都是组件, 组件和组件组合就变成了一个更复杂的组件。

社区组件库

image.png

showcase: 一致性,效率,协同
主题平台: 源力主题
字节云物料库 :源力物料库 物料平台
图标平台 :源力 / 业务图标库

2. 组件库的使用

引入组件库

需要同时安装 react >= 16.8 和 react-dom >= 16.8。 > npm i @arco-design/web-react
基础使用:
import React from "react"; import ReactDOM from “react-dom"; import { Button } from “@arco-design/web-react"; import “@arco-design/web-react/dist/css/arco.css"; ReactDOM.render( Hello Arco, document.querySelector("#root") );

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

yarn add babel-plugin-import -D


修改 Babel 配置,引入插件
plugins: [ [ 'babel-plugin-import', { libraryName: '@arco-design/web-react', libraryDirectory: 'es', camel2DashComponentName: false, style: true, // 样式按需加载 }, ], [ ‘babel-plugin-import’, // 图标库按需加载 { libraryName: '@arco-design/web-react/icon', libraryDirectory: 'react-icon', camel2DashComponentName: false, }, ], ];

主题定制1.通过CSS进行样式覆盖
2.修改Less变量

Aroc Pro

技术栈:

  • React
  • TypeScript
  • BizCharts
  • Arco Design
  • 多架构
    • Next.js
    • Create React APP
    • Vite

国际化

语言:自定义语言包文件 custom-locale.ts RTL视图实现浅析
元素方向 RTL: CSS 属性 direction: rtl; ( 用来设置文本和其他元素的默认方向是从右到左 )
布局 RTL :margin-left => margin-right position: right => position: left
交互行为 RTL: Slider 组件 向左拖动数值变小 => 向右拖动数值变小 其他处理
左还是左,右还是右 Notification 设置为 right 弹出时,无论在 RTL 还是 LTR ,都是出现在右上⻆

搭建业务组件库:
保障规范性,稳定性,提高业务开发效率

3. 自定义组件

业务组件库搭建

通用业务组件库 :保障规范性,稳定性,提高业务开发效率
搭建业务组件库:库架构设计 技术方案 对外文档

关键点

  • 架构设计
    单包架构 多包架构
  • 技术方案
    开发环境 样式方案 产物构建 质量保障 组件开发
  • 对外文档
    Demo 展示 组件 API 生成 版本日志

搭建业务组件—架构设计

单包架构: 一个代码仓库里所有组件打包成一个整体,发布出去一个 npm 包
多包架构: 一个代码仓库包含多个组件代码,会发布出去多个 npm 包。

搭建业务组件—单包结构

一个代码仓库里所有组件打包成一个整体, 发布出去一个 npm 包
优点:

  1. 公共代码易复用
  2. 展示更聚合,便于维护
  3. 引入一个包即可使用全部组件

缺点:

  1. 修改一个组件需要更新整个库
  2. 需要考虑按需加载

搭建业务组件—多包结构

一个代码仓库包含多个组件代码, 会发布出去多个 npm 包。
优点:

  1. 单独发包,升级灵活。
  2. 在同一仓库下,便于代码管理
  3. 使用者无需考虑按需加载

缺点:

  1. 组件间相互依赖时,需要通过 npm 包引入
  2. 组合使用时需要安装每一个用到的 npm 包

搭建业务组件—技术方案

开发环境

  • 打包速度
  • 实时预览,如 storybook


样式方案

  • 样式方案:Less / Sass,CSS in JS,CSS 等
  • 组件库换肤,样式定制等能力


产物构建

  • 构建工具 webpack , rollup, vite , gulp 等
  • 产物格式:cjs , umd ,es

质量保障

  • 测试工具: jest ,karma,mocha, enzyme, react testing-library 等
  • 测试类型:单元测试,快照测试 ,截屏测试,e2e 测试等

搭建业务组件—对外文档

文档部署

  • Demo 展示:Storybook,umijs 等
  • 静态内容: markdown

组件 API 提取

  • 手写
  • 自动提取: ts-docuemnt 等

版本日志生成

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

组件开发规范

好的组件:

高内聚,低耦合
职责清晰,高可维护性: 对外提供简单稳定的接口,对内关注内部逻辑的实现。 组件和组件之间能简单的配合实现定制的功能。 比如:Popver 直接嵌套 Input 即可实现:在输入框聚焦时显示气泡提示内容。
通用性、易拓展
基础组件适用广泛的业务场景 适用于不同行业的业务平台
业务组件适用于针对性平台 具备显著的业务属性,一般基于基础组件开发。 比如:通过关键字调接口搜索 Lark 群聊

组件设计
  • 组件属性定义
  • 类名前缀统一
  • 避免行内样式
  • 避免在 JS 中耦合 CSS
  • 注意样式的按需加载

示例实践guide_tip

功能要点
  1. 控制引导气泡的出现
  2. 点击下一步/上一步时切换气泡卡片的内容
  3. 气泡卡片的位置跟随变动
  4. 在最后一步时,显示完成按钮
核心逻辑
  1. 显示弹出层 : Arco Popover 组件
  2. 步骤切换 :状态变量 current 记录当前处于哪一步骤
  3. 弹出层始终指向对应的 Button :实时获取目标节点的位置,更新弹出层指向。

业务组件快速托管

image.png

4. 总结

这次课程从组件库使用和自定义组件开发两个方面介绍,组件库使用包括组件库引入、主题定制、亮/暗色模式切换、国际化、自定义组件默认配置。自定义组件开发包括单包架构和多包架构、什么是好的组件、组件开发规范、组件快速托管。本次课程通过讲解组件开发的实例演示如何设计通用组件,并进行快速托管,便于我们理解。课程时间不长,内容很丰富,需要自己好好理解消化。