简介
Rezor 是一个基于 React 的微信小程序开发框架,通过它你可以使用 React (Hooks) 来开发小程序。与其他 React 小程序框架不同,Rezor 具有非常优异的性能。事实上在目前微信小程序的限制条件下,Rezor 不仅是现存最快,也是理论最快,理论上已经不存在更快的可能性。所以我说它是最快的 React 小程序框架,没有之一!
Rezor 为了达到目标性能,对 React 做了裁剪。如果你了解 React 你肯定知道 JSX,React 使用 JSX 来描述界面。实际上一个 React 组件可以被拆分成两个部分:状态逻辑 + JSX,Rezor 只摘取了其中的状态逻辑部分,剔除了 JSX 部分。你仍然需要使用小程序模板来描述界面,但是你可以使用 React Hooks 来编写状态逻辑。
Rezor 核心仅仅是一个轻量的运行时库,它既不涉及 Virtual DOM,也不依赖任何编译步骤。从最开始 Rezor 就被设计为可以跟小程序原生语法协同工作,你甚至可以在同一个组件中混用原生语法和 Rezor,这能让你很轻松的将其整合进既有原生小程序项目中,你可以按组件甚至更小的维度逐步迁移。如果你正在使用 Taro,你还可以将部分性能敏感的页面迁移至 Rezor,将 Rezor 作为 Taro 小程序的性能优化手段之一。当然,你也可以完全使用 Rezor 来开发一个小程序。
动机
小程序社区中并不缺乏 React 开发方案,但是它们都有一个很严重的问题:性能堪忧。在我看来为了使用 React 而损伤用户体验是不可接受的,我一直在思考如何实现一个高性能的 React 小程序开发方案,思考了很多年。而 Rezor 就是我的答案。
它是如何工作的?
与 React 一样,Rezor 的工作机制就是依赖 render 函数的重复执行。你调用 setState 之后 render 函数就会重跑,Rezor 会将每次 render 函数执行后返回的状态与事件处理函数同步给小程序组件实例。Rezor 也会收集 render 函数执行时注册的 Effect 或其他生命周期钩子函数,并在准确的时机触发它们。
范围
Rezor 没有 Concurrent Features,所以也不提供 useTransition useOptimistic 等 API。Rezor 更接近 React 18 之前的经典 React,但是 Rezor 也提供与 Concurrent Features 无关的现代化 React API,例如 useEffectEvent 等。
支持的平台
目前 Rezor 仅支持微信小程序。虽然技术上 Rezor 可以支持其他小程序平台,但是由于时间跟精力的限制,我目前并没有这样的计划。