React的替代方案Inferno釋出1.0版本

泡泡淺眠發表於2017-07-11

類似於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
Current time: {this.state.time}
}}
在宣佈版本釋出的文章中,核心團隊的工程師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,但是它們在關注點上有所差異。

本文轉自d1net(轉載)


相關文章