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

一、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...

相关推荐
于慨1 天前
Lambda 表达式、方法引用(Method Reference)语法
java·前端·servlet
石小石Orz1 天前
油猴脚本实现生产环境加载本地qiankun子应用
前端·架构
从前慢丶1 天前
前端交互规范(Web 端)
前端
CHU7290351 天前
便捷约玩,沉浸推理:线上剧本杀APP功能版块设计详解
前端·小程序
GISer_Jing1 天前
Page-agent MCP结构
前端·人工智能
王霸天1 天前
💥别再抄网上的Scale缩放代码了!50行源码教你写一个永不翻车的大屏适配
前端·vue.js·数据可视化
小领航1 天前
用 Three.js + Vue 3 打造炫酷的 3D 行政地图可视化组件
前端·github
@大迁世界1 天前
2026年React大洗牌:React Hooks 将迎来重大升级
前端·javascript·react.js·前端框架·ecmascript
PieroPc1 天前
一个功能强大的 Web 端标签设计和打印工具,支持服务器端直接打印到局域网打印机。Fastapi + html
前端·html·fastapi
悟空瞎说1 天前
深入 Vue3 响应式:为什么有的要加.value,有的不用?从设计到源码彻底讲透
前端·vue.js