Rax is a universal JavaScript library with a largely React-compatible API. If you use React, you already know how to use Rax.

Rax
2015 年双十一,Weex 的方案开始逐步使用,经过这次试水,证明了这套方案未来的场景及可行性,接着 2016 年 Weex 开始进入快速发展的阶段。但是使用 Weex 就意味着必须用 Vue 的语法,这对于整个团队来说是一个不小的挑战:PC 场景下的项目,小伙伴们普遍基于 React 开发,已经有了相当多的经验与沉淀。如果无线的项目要采用一个不同方案(Vue)去做,强推未必会不奏效,但是小伙伴们大概会伤心吧。

于是我们尝试将 React 与 Weex 结合起来,但是由于方案太过 hack 导致各种问题,遂无奈放弃。接着 Rax 的方案应运而生:「Rax 基于 React 的标准,支持在不同容器中渲染,当前最重要的容器即 Weex 和 Web」。

Rax 与 React
React 是一种标准,Rax 是对该标准的一个实现。Rax 只是无线端的解决方案,与 React 并无冲突。事实上淘宝 PC 端的新项目,依然主要是基于 React。当然,Rax 跟 Preact 之类的方案也有本质区别,前者偏向于解决多端问题,后者偏向于解决性能问题,具体可参考下文「Rax 的特点」。

Rax 的特点
1、设计上支持不同容器

Rax 在设计上抽象出 Driver 的概念,用来支持在不同容器中渲染,比如目前所支持的:Web, Weex, Node.js. 基于 Driver 的概念,未来即使出现更多的容器(如 VR 等),Rax 也可以从容应对。Rax 在设计上尽量抹平各个端的差异性,这也使得开发者在差异性和兼容性方面再也不需要投入太多精力了。

2、体积足够小

如上文所说,Rax 是一个面向无线端的解决方案,因此自身的体积对于性能来讲就显得非常重要。Rax 压缩 + gzip 后的体积是 8.0kb, 相比 React 的 43.7kb, 对于无线端友好了很多。

3、支持返回多个同级节点

任何用过 React 的同学大概都踩过同一个坑:方法返回了多个同级节点导致报错。在设计上 React 只能返回单个节点,因此页面上或多或少会产生一些冗余的节点,这在 PC 端并没有太多问题,然而在无线 Android 端嵌套层级越多,应用的 crash 率会不断提高,这一点在低端 Android 机上表现尤其明显。因此 Rax 支持了返回多个同级节点的功能,如:

import {createElement, Component, render} from 'rax';class Test extends Component {render() {return [1, 2, 3].map((item) => {return <p>{item}</p>;});}
}

这一特性可以有效减少页面的嵌套层级,从而减少应用因嵌套层级过多而出现的 crash 问题。

4、标准化

在上文里,我们不断的提各个端的一致性,一致则必有规范可依,Rax 遵循 W3C 标准,比如在 Weex 容器中已经可以直接调用 navigator, document, location, alert 等 W3C 的标准 API.

当然,受限于各个端的差异,标准化的道路还很长,「更标准化」这也是 Rax 未来的重要目标之一。

未来
Write once, run everywhere. 这是口号,亦是目标。Rax 未来会在更多的端上不断探索,比如 VR/AR, 甚至之前微博上有同学提出的是否可以用 Rax 写微信小程序,也是一个蛮有意思的想法。

对于开发者来说,当越来越多的端不断出现在眼前时,我们应该如何应对?是通过不断的踩坑来整理一份长长的 checklist, 然后做项目时一一对照? 或者让我们一起来探索 Rax?

了解更多 Rax 相关内容,欢迎访问 alibaba.github.io/rax

Rax 团队敬上。

参考文章: http://taobaofed.org/blog/201...

什么是 Rax,以及 Rax 的特点相关推荐

  1. Rax 淘宝 双11 双12 实战

    Rax is a universal JavaScript library with a largely React-compatible API. If you use React, you alr ...

  2. 淘宝双促中的 RAX

    摘要:在2017年1月12日 Weex Conf 2017上,来自淘宝前端团队的亚城结合淘宝实际业务分享了淘宝双促中的RAX实践,在本次 Weex Conf 上正式开源的 RAX 是基于 React ...

  3. rax+react hook 实现分页效果

    'use strict'; import { createElement, useState, useEffect, memo } from 'rax'; import View from 'rax- ...

  4. 【转】RAX,eax,ax,ah,al 关系

    转自:RAX,eax,ax,ah,al 关系_迪迦 • 奥特曼-CSDN博客_rax和eax |63..32|31..16|15-8|7-0||AH.|AL.||AX.....||EAX....... ...

  5. RAX,eax,ax,ah,al 关系

    |63..32|31..16|15-8|7-0||AH.|AL.||AX.....||EAX............| |RAX...................|

  6. x64 汇编跟 rax , eax ,ax ,ah ,al 的关系

    今天测试 mov al ,10 mov ah ,20 add al , ah mov byte ptr[a] ,al //字节计算 sub al ,ah cmp zf ,0 mov byte ptr ...

  7. redis基数树rax源码分析(1)

      最近想用libuv写个http服务器,看到了这个开源项目haywire,在看到第39次提交的时候,作者用基数树来存储不同路由的controller,不过在后续版本中改为了使用hash,不过想来不如 ...

  8. 用Rax开发一个联想搜索输入框,内附封装后的npm组件

    来淘系实习已经一个半月了,在这里接触了一个之前未了解过的开发框架:Rax.从最开始拿到需求看着Rax一脸蒙蔽,到现在渐渐熟悉用Rax做开发,这个过程中也让我遇到了Rax的大大小小的问题.下面就来分享一 ...

  9. Rax SSR 完成6倍 React 渲染性能提升

    什么是 SSR SSR 的全称是 Server Side Rendering,对应的中文名是:服务器端渲染,顾名思义是将渲染的工作放在 Server 端进行. 而与之对应的是 CSR ,客户端渲染,也 ...

  10. rax自定义微信小程序导航栏

    一.导航栏样式 背景: 接到一个需求,需要自定义微信导航栏,并且展示如上图存在各种样式: 难点: 兼容IOS刘海屏,IOS药丸屏,安卓无框屏.H5正常屏幕.小程序退出后台不随页面滚动: navigat ...

最新文章

  1. 上拉电阻和下拉电阻_硬件基础:下拉电阻和上拉电阻如何工作
  2. AI 实验--v_JULY_v
  3. 聚焦WCF行为的扩展
  4. App Inventor2项目部署到本地
  5. stm32之 GPIO_Remap_SWJ_Disable之后无法使用swd下载 程序解决方法
  6. 对线程与进程的区别以及对多线程并发的理解
  7. 程序员面试金典——9.1上楼梯
  8. 华为云虚拟服务器怎么搭建,云服务器怎么搭建虚拟主机
  9. 跨数据库分布式实时事务 - 基于RabbitMQ实时消息队列服务实现
  10. ucla计算机科学博士排名,加州大学洛杉矶分校专业排名一览及最强专业推荐(QS世界大学排名)...
  11. python程序语言和机器人控制系统_机器人系统设计与制作:Python语言实现
  12. springmvc防xss脚本注入攻击,springmvc过滤html和js标签,html和js标签转义
  13. linux的idr机制
  14. mac mysql 自动启动_Mac设置Mysql开机启动
  15. Linux下使用WPS做office的二次开发
  16. html内容被背景图片遮住怎么办_完美实现文字置于图片之上且背景半透明
  17. javaSE--基础六(idea.debug,进制转换,二维数组)
  18. 安卓Android手机系统内文件夹全解
  19. 【思维导图】考信息系统项目管理师,看这一篇就够了~
  20. 换根dp(板子整理)

热门文章

  1. Android模仿新浪微博(启动界面登陆界面)
  2. Xcode真机调试 could not lunch failed to get reply to handshake packet
  3. 贝蒂·霍尔伯顿(Betty Holberton)断点背后的大脑
  4. del在php中什么意思,delete键是什么意思
  5. 逆向分析中加解密算法常用工具
  6. 服务器端高性能的IO模型 转自酷勤网
  7. 《数据结构》第十篇、线性表中的链式存储结构--双链表
  8. 四年STM32研发的工作感悟
  9. SSL1653 数字游戏
  10. 边缘计算与深度学习——初读研究生的迷茫