当前位置: 首页 > news >正文

react的替代者Inferno 和preact

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

  • David Iffland
  • 张卫滨

阅读数:23152017 年 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,但是它们在关注点上有所差异。

相关文章:

  • 一同事奉敬拜主
  • rollup 和 webpack 2 都要用 ES6 module syntax 才能 tree-shaking cc 指的是closure compiler
  • 相对比较 includes == 对比
  • 修复安装UltraEdit后,Internet Explorer (IE)的源代码查看器不再是Notepad的问题!...
  • git 文件修改不区分大小写 设置git的敏感
  • 亏欠你真多 [光碟]
  • 正则test的巨坑 在循环的时候去掉g就行了
  • 今天看了《变形金刚.剧场版》,突来灵感PS了一下柯博文,但愿不要被博派看见了!...
  • ES6修饰器
  • awstats简易安装文档
  • vue中data 需要return返回
  • 小程序转base64
  • wikipedia简易安装
  • immutable的api使用
  • 移动博客七宗“罪”
  • Apache Zeppelin在Apache Trafodion上的可视化
  • Fundebug计费标准解释:事件数是如何定义的?
  • If…else
  • JAVA SE 6 GC调优笔记
  • JS基础之数据类型、对象、原型、原型链、继承
  • js数组之filter
  • python大佬养成计划----difflib模块
  • springboot_database项目介绍
  • Theano - 导数
  • 事件委托的小应用
  • 通信类
  • 网络应用优化——时延与带宽
  • 与 ConTeXt MkIV 官方文档的接驳
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 《天龙八部3D》Unity技术方案揭秘
  • elasticsearch-head插件安装
  • ionic入门之数据绑定显示-1
  • 如何在招聘中考核.NET架构师
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • # Apache SeaTunnel 究竟是什么?
  • #if 1...#endif
  • #每天一道面试题# 什么是MySQL的回表查询
  • (ZT)薛涌:谈贫说富
  • (强烈推荐)移动端音视频从零到上手(上)
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • (四) Graphivz 颜色选择
  • (一)Linux+Windows下安装ffmpeg
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • .NET 4.0中的泛型协变和反变
  • .NET Framework Client Profile - a Subset of the .NET Framework Redistribution
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调
  • @JSONField或@JsonProperty注解使用
  • [ 环境搭建篇 ] 安装 java 环境并配置环境变量(附 JDK1.8 安装包)
  • [20170705]lsnrctl status LISTENER_SCAN1
  • [20190401]关于semtimedop函数调用.txt
  • [52PJ] Java面向对象笔记(转自52 1510988116)
  • [C++]C++基础知识概述
  • [CareerCup] 13.1 Print Last K Lines 打印最后K行
  • [codevs 1515]跳 【解题报告】