闲鱼大终端UI组件库——FishUI建设之路

闲鱼的FishUI组件库是为了解决跨端(kun & web)开发的挑战而创建的,旨在提供一套高易用性和稳定性的UI组件。FishUI采用react和typescript,利用kun容器的能力,实现组件的跨端兼容。通过分层设计和自动化测试确保组件的稳定性和效率。文档站点和代码规范提高了组件的易用性,而技术选型如pnpm和lerna+nx则优化了开发流程。FishUI面临如事件机制、属性适配和单测等跨端开发问题,但它的实施已显著提升了开发效率。
摘要由CSDN通过智能技术生成

背景

随着闲鱼前端架构的不断演进,一些关键技术设施需要结合业务特征逐步自建,技术方案也要拥抱社区来提升可扩展性。一方面, 闲鱼跨端开发框架kun 让前端开发者使用JS/CSS/HTML即可交付终端页面,同时兼顾了动态性和高性能,另一方面,前端UI框架也正从集团 rax 逐步转向社区 React 方案。在这个大背景下,围绕 kun 和 web 两个容器的跨端组件建设也势在必行,因此 Fish UI 应运而生,它将全面拥抱 react 生态,并借助 kun 容器的能力,为闲鱼终端开发者提供一套高易用性和稳定性的跨端(kun & web)UI组件库。

FishUI 的最大的技术创新点在于跨端,它通过跨端组件的形式对齐 kun 和 web 两个容器的体验标准,让使用者更加专注于业务逻辑而非容器差异,从而实现为业务开发提效的目标。围绕着该创新和目标,一些可预知的技术难题也随之出现,比如组件库的工程结构如何组织、分端构建如何做、开发规范是什么样等等,这些问题将在下文中一一得到解答。

整体设计

分层设计

Fish UI 作为兼容 kun 和 web 两端的组件库,包含底层的kun容器组件和上层的跨端组件,其分层结构大致如下:

8a60f3356cbee6808e1380b0c3776016.png

其中【跨端组件】一层是 Fish UI 最上层的封装,是抹平 kun 和 web 容器差异的一层,同时也是业务开发者使用频率最高的一层。

理想情况是【跨端组件】要尽可能依赖底层【w3c规范组件】组合扩展而成,要足够丰富,而【kun 扩展组件】一层则希望尽可能做薄,因为其与kun 容器强绑定,是为了解决特定场景问题而产生的,不具备通用性。

本文后续也主要讲解围绕【跨端组件】这一层的相关建设内容。

跨端设计

FishUI 最核心的特点在于【跨端兼容 kun 和 h5】,也是与其他组件库最大的差异点。

通常情况下,业务开发者需要手动判断环境,分别实现两个容器对应的代码,比如渲染一张图片的代码如下:

1823c11e66305ee732b1c02e1165b9df.png

通过 FishUI,我们期望的调用方式应该是这样

4b24b5a4744fd8eb1f11089c76be6bef.png

通过对比,可以看出 FishUI 跨端设计的核心功能在于:

  • • 自动根据 window.kun 判断环境,执行对应环境代码

  • • 自动抹平 kun 和 web 两端的属性差异,无需用户手动处理

  • • 对外提供统一的 TS 接口声明

  • • 减少模板代码量,提升代码简洁度

因此,FishUI 跨端组件的分端设计大致如下(以 image 为 例):

197eb58ec30254936d8c8c73572c8e51.png

技术选型

语言

我们选择了 react + typescript + moduleCSS 作为组件开发语言。

其中样式方案我们使用了 moduleCSS,主要原因是为了避免多人协作开发时存在的样式污染问题。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值