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

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

相关推荐
lijun_xiao20095 小时前
前端最新Vue2+Vue3基础入门到实战项目全套教程
前端
90后的晨仔6 小时前
Pinia 状态管理原理与实战全解析
前端·vue.js
杰克尼6 小时前
JavaWeb_p165部门管理
java·开发语言·前端
90后的晨仔6 小时前
Vue3 状态管理完全指南:从响应式 API 到 Pinia
前端·vue.js
90后的晨仔6 小时前
Vue 内置组件全解析:提升开发效率的五大神器
前端·vue.js
我胡为喜呀6 小时前
Vue3 中的 watch 和 watchEffect:如何优雅地监听数据变化
前端·javascript·vue.js
我登哥MVP7 小时前
Ajax 详解
java·前端·ajax·javaweb
非凡ghost7 小时前
Typora(跨平台MarkDown编辑器) v1.12.2 中文绿色版
前端·windows·智能手机·编辑器·软件需求
馨谙7 小时前
/dev/null 是什么,有什么用途?
前端·chrome
JamSlade8 小时前
流式响应 sse 系统全流程 react + fastapi为例子
前端·react.js·fastapi