各个大厂是怎么实现组件库和相应扩展的?基础组件、区块、页面

一、antd pro 方案

总结:antd 的颗粒度是组件细粒度的;antd pro可以看做区块、page页面级别颗粒度的组件库,将业务常见的交互预设融入组件库中。

所以antd 更加灵活,可以组装不同的业务场景;在特定的场景下,antd pro的开发效率更高,但是难以扩展。

(一)、antd pro定位是一个前端脚手架,用于快速搭建中后台页面。

官网地址:pro.ant.design/zh-CN/docs/...

跟Umi做的事情有点类似,umi定位是前端开发框架。

(二)、antd pro的模板组件pro-components

官网地址:procomponents.ant.design/

(1)技术栈分析

每个业务组件都是一个包;mono单仓库,采用pnpm-workspace 和 lerna实现。

另外,antd的底层逻辑组件库react-component是一百多个单仓库组成github.com/orgs/react-... (大部分采用dumi框架,也有瞥见使用umi框架的)

(二)文档

文档说明写得一般,demos不如antd那么细致,可读性较差。跟组件功能糅杂了太多基础组件也有关系。

(三)优劣势

优势:pro-components的组件提升了开发效率,通过props暴露功能。

劣势1:pro-components的组件 预设了很多行为和交互,对于无UI要求的项目,是可以考虑的。有UI要求的,灵活性太差了,不能直接安装使用。

劣势2:需要理解新增的props的用途,文档引导不够完善的情况下,反而拖累了开发效率。前期需要大量阅读文档和试验组件特性

二、arco Pro 方案

arco.design/docs/materi...

何为物料

在中后台项目开发中,我们早已习惯了使用 UI 组件库提升开发效率。基础的 UI 组件库极大降低了界面开发成本,但此类组件通常都是一些与业务逻辑完全解耦的原子组件,不能完全满足复杂的业务场景。

实际项目中包含了大量的可以复用的业务逻辑强耦合的模块,例如站点导航条、员工选择器。如何在团队内部最大程度复用基础业务模块以提升效率、降低冗余?物料的概念就是为了解决这一问题,将基础业务模块从项目之中抽离,统一维护,它们便可以被称为「物料」。

物料分类

在 Arco 的物料体系中,我们将物料细分为了三个种类:组件、区块、页面。

组件

组件的概念与 Arco 提供的基础组件最为接近,它们是页面的基础元素构成,但是可能与业务逻辑产生了耦合。使用方式与组件库保持一致,通过引入 NPM 依赖来引用组件。

区块

区块相比组件更为复杂,可以理解为多个组件的集合。一个页面通常由若干个区块组成,开发者可以将区块添加到自己的页面进行二次开发。由于区块的复杂性和二次开发的需求存在,区块使用方式与组件不同,本质上是将区块的源码直接下载到本地项目之中。

arco.design/material/de...

在项目中执行以下语句,会在src/pages插入arco-mono-input 目录以及相关的区块内容。

perl 复制代码
arco block use @zdzd/arco-mono-input 

页面

页面即其字面意思,使用方式与区块类似。典型的例子为 ArcoDesign Pro 所提供的页面。

Arco 提供了基于 Node 的脚手架工具 arco-cli,它大致包含了以下的功能:

  • 根据模板创建基于 ArcoDesign 的物料项目;
  • 发布、管理、使用物料;
  • 在项目中使用物料区块或者页面;

脚手架内置了自己的"dumi"去实现业务组件的开发。

三、semi 没有实现pro方案,

四、个人意见

思考点:

  1. 区块组件、页面组件更适合作为模板的形式,而不是 npm 包的形式。

  2. 区块组件、页面组件,通过脚手架或者copy,怎么管理依赖问题?约束性:一般就是将所有用到的utils等方法放在一个目录下,只依赖基础组件库和react。如果需要其他特殊依赖,就得在demo文档说明。

参考:如何看待字节同时开源 Arco 和 Semi,它们和 Ant Design 有什么区别和优势? - 知乎 www.zhihu.com/question/49...

相关推荐
墨绿色的摆渡人9 分钟前
论文笔记(七十五)Auto-Encoding Variational Bayes
前端·论文阅读·chrome
今晚吃什么呢?30 分钟前
前端面试题之CSS中的box属性
前端·css
我是大龄程序员33 分钟前
Babel工作理解
前端
CopyLower1 小时前
提升 Web 性能:使用响应式图片优化体验
前端
南通DXZ1 小时前
Win7下安装高版本node.js 16.3.0 以及webpack插件的构建
前端·webpack·node.js
Mintopia2 小时前
深入理解 Three.js 中的 Mesh:构建 3D 世界的基石
前端·javascript·three.js
前端太佬2 小时前
暂时性死区(Temporal Dead Zone, TDZ)
前端·javascript·node.js
Mintopia2 小时前
Node.js 中 http.createServer API 详解
前端·javascript·node.js
xRainco2 小时前
Redux从简单到进阶(Redux、React-redux、Redux-toolkit)
前端
印第安老斑鸠啊2 小时前
由一次CI流水线失败引发的对各类构建工具的思考
前端