QCon上海站购票倒计时最后3天!查看精彩日程 了解详情
写点什么

React 的替代方案 Inferno 发布 1.0 版本

2017 年 1 月 15 日

类似于 React 的 JavaScript 库 Inferno 发布了 1.0 版本,对于那些熟悉 React,但对现代化 JavaScript 库的大小感到沮丧的开发人员提供了一个新的可选方案。

Inferno 的口号是“用于构建现代用户界面的、超快的类 React JavaScript 库”。它的目标用户是那些喜欢 React 的理念和 API,但是并不需要其辅助功能(比如使用 React Native 的能力)的开发人员。Inferno 是严格针对浏览器或服务器以及典型 DOM 构建的。在网络传输方面,Inferno 的大小是 9 KB ,而 React 的大小是 45 KB(两者均为 gzip 的文件大小)。这样的话,在移动设备上,就会有更短的解析时间,因此,性能也会更好。

该团队花费了很多的时间在实际的性能提升上。在一个采访中,这个库的创建者 Dominic Gannaway 提到了在性能方面所开展的工作:

进行广泛的检查,确保反优化(deoptimisations,“deopts”,指的是 JIT 编译器无法编译的地方)的内容达到最小化。Inferno 团队采用了基准测试、探测工具(IRHydra、Chrome Dev Tools),并对代码库的各个部分进行了很多的重写,只是为了持续地寻找移除 deopts 的方法。

Inferno 的代码非常类似于 React,如下的代码展现了这一点:

复制代码
class MyInfernoTest extends Component {
componentDidMount() {
setInterval(() => {
this.setState({
time: (new Date()).toLocaleString()
});
}, 200);
}
render() {
return <h2>
Current time: <span>{this.state.time}</span>
</h2>
}
}

宣布版本发布的文章中,核心团队的工程师 Luke Sheard 指出,2016 年,在 Github 上,该项目的 star 数量已经从 150 个攀升到年底的近 7300 个。目前它已经超过了 8000 个。尽管因为性能的提升,Inferno 特定的代码需要一些变更,但是通过恰当的兼容性库,它可以作为替换 React 的一个很好的方案。

今年,团队希望扩展框架的生态系统,但是还需要 Gannaway 在各个方面的指导。在 2016 年底,Gannaway宣布加入了 Facebook,从事 React 的工作。Sheard 说虽然 Gannaway 的作用会减少,但 Inferno 将会继续发展,他们会继续关注如何提升该库的核心体验和所支持的广度:

在 2017 年,Inferno 将会持续关注核心功能的提升,尽快修正缺陷并且会为社区提供支持和使用指南,还会花费精力采纳新的库,扩展 Inferno 的涉及范围和实现模块化,使其能够应用到范围更广的场景中。到目前为止,很多模块已经移植过来了,但是通过社区的努力,我们希望能够继续扩展这项工作。

相对于更加著名的 React 的替代方案 Preact ,Inferno 是一个新的参与者。这两者都可以用来替换 React,但是它们在关注点上有所差异。

查看英文原文 React Alternative Inferno Hits 1.0

2017 年 1 月 15 日 18:002693

评论

发布
暂无评论
发现更多内容

架构设计的一些思考

hasWhere

SpringMVC源码分析-HandlerAdapter(2)-RequestMappingHandlerAdapter的初始化

Brave

源码 springmvc 9 月日更

nginx路径匹配踩坑

hasWhere

模块四作业

Geek_fc100d

「架构实战营」

架构训练营-模块八作业

hello

架构训练营

架构训练营模块八作业

喻高咏        

架构训练营

模块八作业

SAKIN

TCP/IP参考模型与标准协议

Regan Yue

TCP/IP 9月日更 9 月日更

Java面试必刷的200道真题,深挖底层原理、啃源码,最终上岸

Java 程序员 后端

Nginx如何支持HTTPS,大厂Java高级多套面试专题整理集合

Java 程序员 后端

P8级别的顶级“并发编程”宝典,面试完腾讯我才发现这些知识点竟然没掌握全

Java 程序员 后端

RabbitMQ的高级特性和消息补偿机制,字节跳动面试真题

Java 程序员 后端

缓存系统设计与实现

hasWhere

写给互联网工程师的5G书 | 6. 参考实现

俞凡

架构 5G 网络 通信

《转》搭建websocket消息推送服务

hasWhere

过滤器、拦截器、监听器

hasWhere

中秋晴朗夜,我们与星月相见

白洞计划

Elasticsearch 源码学习(1)源码编译调试

Se7en

写给互联网工程师的5G书 | 7. 云化接入网

俞凡

架构 5G 网络 通信

产品分析:如何给出解决方案?

石云升

产品经理 产品思维 9月日更

高可用延迟队列设计与实现

万俊峰Kevin

Go 微服务 延迟队列 microservice 定时队列

技术圈的【多肉小达人】,一篇文章你就能做到

梦想橡皮擦

9月日更

Vue进阶(幺贰叁):v-for 实现一行展示 n 个元素

No Silver Bullet

Vue 九月日更 9 月日更

P8级别的顶级“并发编程”宝典,linux基础入门知识

Java 程序员 后端

古董系统的并发安全改造

hasWhere

写给互联网工程师的5G书 | 4. RAN详解

俞凡

架构 5G 网络 通信

端口连接出现大量FIN_WAIT1/CLOSE_WAIT

hasWhere

PDF超过6000页,2021最新Java面试题及答案

Java 程序员 后端

Vue进阶(幺贰肆):前端用户体验提升(一)

No Silver Bullet

用户体验 九月日更 9 月日更

架构实战营模块八作业

技术是伙伴

架构实战营

写给互联网工程师的5G书 | 5. 高级功能

俞凡

架构 5G 网络 通信

React的替代方案Inferno发布1.0版本-InfoQ