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

阅读数:2431 2017 年 1 月 15 日 18:00

类似于 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

收藏

评论

微博

用户头像
发表评论

注册/登录 InfoQ 发表评论