组件即封装好的可复用的程序“零部件”
社区组件库
组件的特性:一致性、效率、协同
当使用组件库中的一个组件时,如果不做特殊说明,js文件是将整个组件库都加载了,为了达到优化的目的,需要按需加载使用组件【也可以手动在每个项目文件里按照需要引入单独的组件】
安装按需加载插件 babel-plugin-import
yarn add babel-plugin-import -D
实现局部应用暗色模式的核心思路:本质上是控制暗色颜色变量的挂载位置,提高我们所需要的颜色变量的优先级
LTR表示从左到右的阅读习惯
RTL表示从右到左的阅读习惯(中东有的国家是这种阅读习惯,因此在页面布局、组件细节上要设置成从右到左的阅读习惯)
搭建业务组件库(以Arco-design为例)
架构设计:考虑使用单包架构还是多包架构
单包架构:一个代码仓库里所有组件打包成一个整体,发布出去一个npm包【优点:公共代码易复用;展示更聚合,便于维护;引入一个包即可使用全部组件。缺点:修改一个组件需要更新整个库;需要考虑按需加载】
多包架构:一个代码仓库包含多个组件代码,会发布出去多个npm包【优点:单独发包,升级灵活;在同一仓库下,便于代码管理;使用者无需考虑按需加载。缺点:组件间相互依赖时,需要通过npm包引入;组合使用时需要安装每一个用到的npm包】
技术方案:从开发环境、样式方案、产物构建、质量保障四个方面考虑
开发环境:
打包速度
实时预览,如storybook
样式方案:
样式方案:Less/Sass,CSS in JS,CSS等
组件库换肤,样式定制等能力
产物构建:
构建工具webpack,rollup,vite,gulp等
产物格式:cjs,umd,es
质量保障:
测试工具:jest,karma,mocha,enzyme,react-testing-library等
测试类型:单元测试,快照测试,截屏测试,e2e测试等
对外文档:文档部署、组件API提取、版本日志生成
文档部署:
Demo展示:Storybook,umijs等
静态内容:markdown
组件API提取:
手写
自动提取:ts-document等
版本日志生成:
手写
自动提取:从PR提交记录自动提取@arco-design/changelog