一、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 方案
何为物料
在中后台项目开发中,我们早已习惯了使用 UI 组件库提升开发效率。基础的 UI 组件库极大降低了界面开发成本,但此类组件通常都是一些与业务逻辑完全解耦的原子组件,不能完全满足复杂的业务场景。
实际项目中包含了大量的可以复用的业务逻辑强耦合的模块,例如站点导航条、员工选择器。如何在团队内部最大程度复用基础业务模块以提升效率、降低冗余?物料的概念就是为了解决这一问题,将基础业务模块从项目之中抽离,统一维护,它们便可以被称为「物料」。
物料分类
在 Arco 的物料体系中,我们将物料细分为了三个种类:组件、区块、页面。
组件
组件的概念与 Arco 提供的基础组件最为接近,它们是页面的基础元素构成,但是可能与业务逻辑产生了耦合。使用方式与组件库保持一致,通过引入 NPM 依赖来引用组件。
区块
区块相比组件更为复杂,可以理解为多个组件的集合。一个页面通常由若干个区块组成,开发者可以将区块添加到自己的页面进行二次开发。由于区块的复杂性和二次开发的需求存在,区块使用方式与组件不同,本质上是将区块的源码直接下载到本地项目之中。
在项目中执行以下语句,会在src/pages插入arco-mono-input 目录以及相关的区块内容。
perl
arco block use @zdzd/arco-mono-input
页面
页面即其字面意思,使用方式与区块类似。典型的例子为 ArcoDesign Pro 所提供的页面。
Arco 提供了基于 Node 的脚手架工具 arco-cli,它大致包含了以下的功能:
- 根据模板创建基于 ArcoDesign 的物料项目;
- 发布、管理、使用物料;
- 在项目中使用物料区块或者页面;
脚手架内置了自己的"dumi"去实现业务组件的开发。
三、semi 没有实现pro方案,
四、个人意见
思考点:
-
区块组件、页面组件更适合作为模板的形式,而不是 npm 包的形式。
-
区块组件、页面组件,通过脚手架或者copy,怎么管理依赖问题?约束性:一般就是将所有用到的utils等方法放在一个目录下,只依赖基础组件库和react。如果需要其他特殊依赖,就得在demo文档说明。
参考:如何看待字节同时开源 Arco 和 Semi,它们和 Ant Design 有什么区别和优势? - 知乎 www.zhihu.com/question/49...