React DevUI 18.0 正式发布🎉
Jay 是一位经验丰富并且对质量要求很高的开发者,对 Angular、React 等多种框架都很熟悉,我们在开源社区认识,在我做开源社区运营的过程中,Jay 给了我很多帮助,他也是 React DevUI 开源组件库的创建者。
2021年11月,由 Jay 主导发起了 React DevUI 开源组件库项目,经过一年多的孵化,终于在2022年11月23日发布 18.0.0 正式版本
特性:
- 基于最新的
React 18+TypeScript+Nx技术栈 - 包含
51个灵活、高质量的组件 - 包含配套的 Admin 系统(持续完善中)
- 支持主题定制
- 支持国际化
- 支持 TypeScript
- 支持 Monorepo
- 支持单元测试(持续完善中)
- 包含完善的设计指南 / 开发规范 / 贡献流程
- 完善的构建 / 发布 / 测试 / 依赖管理等基础设施
除了使用了最新的技术进行组件开发之外,React DevUI 还对组件的细节体验进行极致的打磨,比如:
- 所有组件和网站均遵循WCAG 2.0规范做了无障碍设计(Accessibility),比较明显的就是焦点管理和对键盘方向键的支持,欢迎到我们的官网体验。
- 针对大数据量的列表做了极致的虚拟滚动,渲染和筛选数十万数据无任何卡顿,感兴趣可以体验下我们的Select组件。
- 在API设计上,我们也经过了仔细的推敲和思考,所有组件的 API 都以易用和是否符合预期为设计原则,简洁、灵活、开发者友好,从Compose组件就可以窥见一斑。
为什么要开发这个组件库
接触前端从 Vue2 开始,深入学习的是 Angular(公司项目),这里插一句,Angular 作为前端开发者真的可以好好学一下,主要是学习其编程思想和比较与其它框架的差异。我个人对于 React 还是非常感兴趣的,所以当时就看了 React17 官网文档和相关教程,state => ui 这种纯粹的驱动模式简直是完美,我喜欢这种可靠的渲染,但奇葩的是异步函数里调用 setState 会立即重新渲染,虽然到目前为止我都没有过多时间了解 React18 之前的东西,不过当时我就想这绝对是个 bug 收集器。
可能缘分是个奇妙的东西,我不知道怎么就看到的 React18 的新特性,这个 concurrency(并发)那可真是看的我人麻了,这绝对会是目前最好的框架,那一刻 jay 知道必须写个组件库。
组件库的技术选型
开发组件库的技术栈为 react18 + ts + sass,react18 + ts 没啥好说的,这里说说为什么用 sass。
当初也有人建议用 css in js,其实在这之前我是不知道这个概念的,毕竟没用过 React,了解之后发现其灵活性的确是 sass 无法比拟的,但是我真的要为了这种灵活性舍弃:
- 开发成本,sass 作为最受欢迎的 css 扩展,但凡前端几乎了解,不了解的也无所谓,sass 完全兼容 css 语法。
- 样式独立,样式独立于组件,我希望开发其它框架组件时不用再写一套样式,本质是一种模块化,即样式的模块化,我相信好处不止于此。
- 性能。
最终我选择 sass,而且 sass + css 变量 的灵活性不见得不如 css in js,特别是有样式规范的情况下。
组件遵循的规范
组件库从诞生之初就遵循下面最基本的规范:
- 如果有 无障碍 支持,那么一定要实现。
- 国际化(i18n)支持。
- SSR 支持。
- 移动设备支持。
后面开发中添加了组件类支持:
其它的一些规范:
- Prop 命名,如支持 form 的输入为
dModel,弹窗状态统一为dVisible。 - 列表类组件的大数据支持,实现时间复杂度为 O(n),如 Select 选择框。
- 一些边边角角我实在记不起来了。
样式规范
组件样式规范:
- 命名遵循 BEM 规范。
- 明显的聚焦或激活样式反馈。
- 内敛的动画,即动画变化属性数量尽可能少(一般小于等于 2 个),如 Button 聚焦时仅变化背景色或边框。
优势在于是由经验丰富的技术大佬主导的开源项目
说吧,为啥用你这组件库。
所有组件由 jay 开发,这意味着:
- 所有组件均遵循规范。
- 统一的 API 设计。
- 统一的样式设计。
- 性能的把控。
- 极简的大小,npm 包 未压缩 不超过 1MB!
网址
--- END ---
我是 Kagol,如果你喜欢我的文章,可以给我点个赞,关注我的掘金账号和公众号 Kagol,一起交流前端技术、一起做开源!
React DevUI 18.0 正式发布🎉的更多相关文章
- React Router 4.0 体验
React Router 4.0 (以下简称 RR4) 已经正式发布,它遵循React的设计理念,即万物皆组件.所以 RR4 只是一堆 提供了导航功能的组件(还有若干对象和方法),具有声明式(声明式编 ...
- avalon1.0正式发布
2013年最后的收成:avalon1.0正式发布 大半年前我就说过,MVVM是前端究极的解决方案,因此之后我大多数时间都在折腾avalon,成立了专门的QQ群与感兴趣的一起讨论.感谢第一批吃螃蟹的人, ...
- 初步学习React Router 4.0
React Router 4.0 是react官方推荐的路由库.4是已经正式发布的最新版本. 初始化项目启动之后: npm run eject 弹出配置文件.自定义配置webpack 查看下pac ...
- 云原生生态周报 Vol. 21 | Traefik 2.0 正式发布
作者 | 浔鸣.心水.元毅.源三.衷源 业界要闻 CNCF 计划将 TOC 升至 11 人 技术监督委员会(TOC)是 CNCF 的三大核心管理机构之一,从 2020 年 1 月起,TOC 将从 9 ...
- TypeScript 2.0 正式发布
9 月 22 日,TypeScript 2.0 正式发布了. TypeScript 是微软开发的开源的编程语言,主要负责人是 C# 之父 Anders Hejlsberg. TypeScript 成功 ...
- .NET 5.0正式发布,功能特性介绍(翻译)
本文由葡萄城技术团队翻译并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 我们很高兴今天.NET5.0正式发布.这是一个重要的版本-其中也包括了C# ...
- AppBox_v2.0完整版免费下载,暨AppBox_v3.0正式发布!
文章更新: AppBox v6.0中实现子页面和父页面的复杂交互 AppBox 是基于 FineUI 的通用权限管理框架,包括用户管理.职称管理.部门管理.角色管理.角色权限管理等模块. AppBox ...
- sql语句 decimal(18,0)什么意思
decimal(18,0)18是定点精度,0是小数位数.decimal(a,b)a指定指定小数点左边和右边可以存储的十进制数字的最大个数,最大精度38.b指定小数点右边可以存储的十进制数字的最大个数. ...
- Socket.IO 1.0 正式发布,快速可靠的实时引擎
Socket.IO 是目前 Web 领域最火的实时引擎,用于实现基于事件的双向实时的通信.它适用于任何平台,浏览器或设备,专注于可靠性和速度.您可以将数据推送到客户端,并获得实时的计数,日志或图表. ...
- Django 1.6.0 正式发布,大幅改进事务处理
Django 1.6.0 正式发布了,查看官方发行说明. 下载地址:Django-1.6.tar.gz ,也可通过 pip 安装: pip install Django==1.6 要求 Python ...
随机推荐
- 基于python的RSA解密算法
摘要 网上有很多关于RSA的解密脚本,欧拉函数.欧几里得函数什么的,对于一个大专生的我来说,一窍不通,至此经历了三天三夜,我翻阅了RSA的加密原理,以及其底层算法,专研出了一套我自己的解密算法,尚有不 ...
- 组件化开发1-git命令简洁版
1-给项目添加git git init 2-查询当前状态,(红色显示的为在工作区,绿色为暂缓区) git status 3-提交到暂缓区 git add . 4-提交到本地仓库('xxxx'里面为注释 ...
- 重学Java泛型
一丶从字节码层面看范型擦除 public class Type1<T> { private T t; } 使用jclasslib插件查看其字节码: 可以看到 t属性的类型是List< ...
- 给nsis窗口添加立体阴影
利用SetClassLong函数给nsis窗口添加了阴影,看起来很酷^_^ System::Call `user32::SetClassLong(i$HWNDPARENT,i${GCL_STYLE}, ...
- NOIP 2013 提高组 洛谷P1967 货车运输 (Kruskal重构树)
题目: A 国有 nn 座城市,编号从 11 到 nn,城市之间有 mm 条双向道路.每一条道路对车辆都有重量限制,简称限重. 现在有 qq 辆货车在运输货物, 司机们想知道每辆车在不超过车辆限重的情 ...
- Linux系统管理_磁盘管理——敬请期待!!!
df 显示磁盘空间使用情况 -a 全部文件系统列表 -h 以方便阅读的方式显示 -T 列出文件系统类型 du 查看目录和文件的磁盘空间使用情况 -a 显示目录中所有文件大小 -h 以易读方式显示文件大 ...
- LeetCode------递归(爬楼梯)
1.递归 1.一个问题的解可以分解为几个子问题的解. 2.这个问题与分解之后的子问题,除了数据规模不同,求解思路完全一样 3.存在基线/终止条件 来源:力扣(LeetCode) 链接:https:// ...
- cmd中pip加速的方法
临时加速: pip install dlib -i https://pypi.tuna.tsinghua.edu.cn/simple/ 永久加速: 在user文件夹里新建pip文件夹,再建pip.in ...
- .Net core--创建一个单元测试xUnit
创建一个xUnit项目 webApi.test 创建之后会有一个默认的[Fact] (测试的标准格式) [Fact] public void TestEqual() { int a = 10, b ...
- 题解 CF327A Flipping Game
前言 数据水的一批,\(\mathcal{O}(n^3)\) 给过我觉得是不应该的. 题意 有一个由 \(0\) 和 \(1\) 组成的序列 \(a_1,a_2,a_3,a_4....,a_n\) . ...