Remax - 使用真正的 React 构建小程序

为何要用 React 来构建小程序

Learn once, write anywhere.react

由于 React 是咱们最熟悉的技术。git

小程序糟糕的 API 设计已经有不少文章吐槽,这里就再也不赘述了。再加上如今一大堆小程序平台,每一个平台之间又有大大小小的差别,这对于有跨平台需求的小程序来讲无异因而一场灾难。github

React 的社区生态体系很是庞大,经过在小程序中引入 React 以及 React Hooks 提供的逻辑抽象能力,咱们能够在小程序中直接利用 React 生态体系中大量的技术沉淀(好比:react-usefield-form)。web

更完整的 TypeScript 支持。固然你也能够用 TypeScript 去写现有的小程序,可是因为小程序的架构缘由,模板层跟逻辑层(也就是 Page)有自然的割裂,即便在逻辑层使用了 TypeScript,在模板层也没法享受类型检查和自动补全带来的便利。引入 React 后,咱们的代码所有运行在逻辑层中,能够全程静态类型护航,给你满满的安全感。小程序

现有的方案

目前社区中使用 React 构建小程序的方案大都使用静态编译的方式实现。所谓静态编译,就是使用工具把代码语法分析一遍,把其中的 JSX 部分和逻辑部分抽取出来,分别生产小程序的模板和 Page 定义。微信小程序

这种方案最大的问题就是会有不少限制,由于语法分析是静态的,因此这些方案都会去限制一些动态的写法。另外正是由于 JavaScript 语言的动态性,要去作语法分析自己就是件很复杂的事情,因此这些方案实现起来每每也很是复杂。xcode

最重要的,静态编译后的你的代码就转换成了小程序代码,运行时其实并无 React 的存在,你只是用了 React 的写法, 而不是真正的在用 React 作应用。安全

咱们的方案

今年初的时候,@xcodebuild 向你们介绍了如何在小程序中使用 React with Hooks。这是一个很是创新的方案,咱们在对这个方案作了完善,而且在线上小程序中获得验证后,正式发布了基于 React 的小程序开发框架:微信

Remax

www.remaxjs.org架构

Remax 让你可使用真正的 React 去构建小程序,你能够他理解成面向小程序的 React Native。

Remax 原理

首选来看一下小程序的架构(支付宝和微信大同小异):

小程序架构

正如上面提到的,小程序架构分为两层,你写的逻辑代码独立运行在一个进程中,每一个页面会有本身独立的渲染进程(也就是一个 webview)用来渲染模板。而整个小程序又运行在 APP 容器中(也就是支付宝和微信自己)。逻辑层和视图层之间经过创建一个消息通道来通讯。

再来看下 React 的架构:

React 架构

最下面一层是 React 自己,上层的 ReactDOM 和 ReactNative 咱们称之为「Renderer」。Renderer 跟 React 之间经过 ReactReconciler 链接把元素(也就是一般所说的「虚拟 DOM」)渲染到对应的平台上。而 Remax 就是一个咱们实现的 Renderer,它把「虚拟 DOM」渲染到了小程序的视图层上。

Remax 架构

能够看到,咱们把 React 和 ReactReconciler 运行在小程序的逻辑层中,并经过 Remax 把生成的「虚拟 DOM」渲染到视图层。从而作到了使用真正的 React 去构建小程序。

最后

正如第一段中提到的,把 React 运行在小程序中能够带来很是大的想象力。小程序自己能够说是一种创新,它把应用分为两层来提升视图层的渲染速度,可是微信从一开始就选择使用私有且落后(起码目前看来是落后的)的技术方案来定义小程序,然后面的追随者为了吸引开发者亦使用了跟微信小程序相似的设计。Remax 但愿能打破这个局面,经过开放的生态为开发者带来全新的小程序开发体验。

相关文章
相关标签/搜索