GitHub | Documentation | 中文文档 | 互动教程
或许你常常会想,一下子就能想明白交互逻辑的网页,为什么实现起来,动辄就要几百行代码,花很多时间?
前端框架要解决这个问题——但是前端框架已经太多了,实在不想了解一个新的,除非是——从根本上就不同的前端框架?
Refina.js 就是。Refina.js 遵循开发效率>可配置性>运行效率的设计理念,首先保证开发效率极高,再去追求细节的可配置程度、功能的完美性和兼容性。
使用 Refina.js,可以以极高的效率,做出超越绝大部分国内中小厂、外包公司的网页。Refina.js 大大提高了完美程度的下限。目前根据数个实际项目估计得出,使用 Refina.js 的代码量约为"传统"前端框架的60%~70%,开发效率提高了1.4x~1.6x 倍。
Talk is cheap, show me the code!
这是一段 Vue.js 代码:
这是等价的 Refina.js 版本:
注释:
特点
- Refina.js 的代码更紧凑(废话更少)
- Refina.js 使用纯TypeScript/JavaScript ,这意味所有开发工具都可以直接支持 Refina.js
- Refina.js 的状态是普通的JS值,不需要
ref(),不需要setState,也不需要复杂的编译时转换 - Refina.js 抛弃了类XML的语法,没有结束标签,按位置传入属性,并且不用回调函数处理事件
- Refina.js 的组件是“调用即声明”的,而非像 JSX 那样创建并返回一棵组件树
Refina.js 的这种写法受到了 Dear ImGui 的启发。后者已经有大量的用户。
功能
- 组件化
- 视图分割
- 完善的类型提示
- 热模块替换 (Hot Module Replacement, HMR)
- 插件系统
npm create refina快速创建项目
生态
- 使用 Vite.js
- MdUI 组件库:基于 MdUI v2 二次封装的组件库
@refina/mdui已经发布 - Basic Components 组件库:对一些HTML元素的简单封装
- FluentUI 组件库:因为原来的实现基于React,需要重写。目前正在开发中,已经完成了大部分较复杂的组件
- 支持 Tailwind CSS
- 支持 Griffel.js
如果你觉得感兴趣,或许可以花上一点时间,了解一下Refina.js。希望它不会让你失望——我相信它是独一无二的。
- GitHub
- 中文文档
- 互动教程
- Playground
- QQ群:785646059 (如有任何疑问,欢迎在QQ群中交流~)
写在最后
-
由于根本上的不同,Refina.js 不能被经典的理论解释,比如:Refina.js 拥有“半个 VDOM”
-
Refina.js 是怎么感知状态变化的?接收事件之后自动更新页面,通过提高更新效率来实现相当低(~20ms)的延迟
-
Refina.js 的组件的抽象层次比其他框架的抽象层次更高,因此需要手动配置的属性更少,当然可自定义的程度也就降低了
-
Refina.js 已经可用。底层的设计已经比较稳定,但是写法上的设计仍在不断改进。相关的组件库也在积极开发中
-
Refina.js 会弃坑吗?有许多说好不会弃坑的项目最后还是弃坑了。好在 Refina.js 的设计决定了它本身非常轻量,维护起来比其他框架轻松太多
-
声明:术业有专攻,Refina.js 不能用于开发定制程度过高的网页(需要大量不典型的组件的那种)。Refina.js 专为让你早点下班而设计——而不是为了让你早点被替代而设计