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

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

相关推荐
lh_125413 分钟前
ECharts 地图开发入门
前端·javascript·echarts
jjw_zyfx14 分钟前
成熟的前端vue vite websocket,Django后端实现方案包含主动断开websocket连接的实现
前端·vue.js·websocket
Mikey_n1 小时前
前台调用接口的方式及速率对比
前端
周之鸥1 小时前
使用 Electron 打包可执行文件和资源:完整实战教程
前端·javascript·electron
我爱吃朱肉1 小时前
HTMLCSS模板实现水滴动画效果
前端·css·css3
机器视觉知识推荐、就业指导1 小时前
开源QML控件:进度条滑动控件(含源码下载链接)
前端·qt·开源·qml
前端snow1 小时前
前端全栈第二课:用typeorm向数据库添加数据---一对多关系
前端·javascript
難釋懷1 小时前
Shell脚本-for循环语法结构
前端·chrome
全栈老李技术面试1 小时前
【高频考点精讲】async/await原理剖析:Generator和Promise的完美结合
前端·javascript·css·vue·html·react·面试题
kadog1 小时前
PubMed PDF下载 cloudpmc-viewer-pow逆向
前端·javascript·人工智能·爬虫·pdf