自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

2023年下載量超1.2億,這個前端框架憑什么?

開發(fā) 前端
Preact 是一個輕量級的前端庫,用于構建用戶界面(UI),其功能和 React 相似,但體積更小,只有大約 3 KB。Preact 具有與 React 類似的現(xiàn)代 API,因此可以視為 React 的一個快速、輕量級的替代方案。Preact 的核心目標是高性能、輕量級和即時生產(chǎn),其名稱中的"P"代表 performance(性能)。

最近盤點了 2023年度熱門前端框架的 npm 下載量,發(fā)現(xiàn) Preact 已經(jīng)躋身前五名,年度下載量高達 1.23 億。本文就來看看 Preact 是什么,它和 React 又有何區(qū)別!

Preact 是什么?

Preact 是一個輕量級的前端庫,用于構建用戶界面(UI),其功能和 React 相似,但體積更小,只有大約 3 KB。Preact 具有與 React 類似的現(xiàn)代 API,因此可以視為 React 的一個快速、輕量級的替代方案。Preact 的核心目標是高性能、輕量級和即時生產(chǎn),其名稱中的"P"代表 performance(性能)。

Preact并非 React 的翻版,兩者之間存在顯著差異。盡管其中許多差異看似微不足道,但通過preact/compat,可以實現(xiàn)與React的高度兼容。Preact 不追求包含 React 的所有功能,而是致力于保持其代碼的簡潔和專注。這種策略避免了不必要的復雜性,使得 Preact 更加高效。

Preact 的起源

Jason Miller,Preact 的創(chuàng)始人,長期致力于為Web創(chuàng)造各種UI框架和模板引擎。然而,他發(fā)現(xiàn)始終難以創(chuàng)建一個完全滿足他所有需求的完美框架,尤其是在處理 DOM 時遇到諸多挑戰(zhàn)。直到他發(fā)現(xiàn)了JSX和React,這兩個工具完美滿足了他對框架的所有期待和需求。為了更深入地理解React的工作原理,Jason決定親手打造一個與React類似的項目,他堅信通過實踐學習能取得更好的效果。

起初,Preact只是一個簡單的Codepen文件,但Jason通過持續(xù)不斷的優(yōu)化和新功能的添加,使其逐漸成長為能夠像React一樣渲染大量DOM元素的強大工具。當他在桌面和移動設備上對自己的項目進行速度測試時,結果令人驚喜:Preact的性能幾乎與純JavaScript相當,甚至在某些方面超越了React。

受到這一鼓舞,Jason決定將Preact繼續(xù)發(fā)展下去,并將其打造成為一個開源庫。這個庫旨在為那些因React的高性能成本而猶豫不決的開發(fā)者提供一個替代選擇。Preact不僅在功能上與React相近,而且更加輕量級和高效。該庫于2015年11月13日首次在GitHub上發(fā)布(v2.0.0)。

自那時以來,Preact社區(qū)不斷發(fā)展壯大,吸引了越來越多的用戶、貢獻者和維護者。如今,Preact已成為一個備受推崇的前端庫,為開發(fā)者提供了另一種構建高效、現(xiàn)代化用戶界面的選擇。

Preact vs React

大小

React 功能豐富,其生態(tài)系統(tǒng)中預置了眾多的實現(xiàn)、功能和函數(shù)。然而,這種全面性的代價是相對較大的打包體積。對于那些大量使用第三方庫或依賴項的應用來說,這可能會導致初始頁面加載時間受到影響。

Preact 因其小巧的體積而備受稱贊,從而在運行時提供了更低的資源占用。它聚焦于核心視圖庫,僅包含如事件處理和差異比較等基礎實現(xiàn)。為了更好地優(yōu)化性能和內存管理,Preact 完全摒棄了 React 中的調試功能和其他冗余特性。這種有針對性的設計策略使得打包后的體積大幅減少,同時確保了更高效的內存使用。

具體來說,React 本身大小約 6KB,而 ReactDOM 大小約 130KB,壓縮(Gzip)后的大小約為 42KB。而 Preact 的壓縮后的大小僅為 4KB。

合成事件

Preact 與 React 在事件系統(tǒng)的實現(xiàn)上有顯著差異:

  • React 為了實現(xiàn)更好的性能和更小的包體積,引入了合成事件系統(tǒng)。這一系統(tǒng)為所有事件提供了一個跨瀏覽器的抽象層,確保了事件對象在不同瀏覽器中的一致性。
  • 相比之下,Preact則選擇了更貼近瀏覽器原生行為的方式。它直接使用瀏覽器的標準 addEventListener 方法來注冊事件函數(shù)。這意味著在Preact中,事件名稱和事件對象的行為與原生JavaScript/DOM中的行為完全一致。

性能

Preact 因其卓越的性能和精簡的特性而備受贊譽。得益于其小巧的體積、簡練的代碼庫以及輕量級的虛擬DOM,Preact 能夠以比React更高的效率和速度更新組件。由于Preact的虛擬DOM設計得更為簡潔,它大幅減少了更新操作所需的工作量,從而實現(xiàn)了更快的運行時性能。

React之所以在性能方面與Preact相比稍顯遜色,是因為其虛擬DOM提供了更為全面和復雜的特性,以滿足復雜應用所面臨的挑戰(zhàn)。然而,這種全面的特性集在一定程度上犧牲了性能。

版本兼容

Preact 旨在與 React 完全兼容,這使得現(xiàn)有的 React 應用能夠無縫地遷移到 Preact,僅需最少的代碼更改。

Preact 和 Preact/Compat 的版本兼容性是根據(jù)它們與 React 的當前版本和前一個主要版本的兼容性來衡量的。當 React 團隊宣布新的功能或更新時,Preact 團隊會評估這些新功能是否符合 Preact 項目的目標。如果新功能對 Preact 有意義且符合項目的方向,那么這些功能可能會被納入 Preact 的核心代碼中。Preact 團隊會公開討論這些決策,并鼓勵社區(qū)成員通過問題、拉取請求等方式參與決策過程。

調試

React 提供了一系列豐富的調試工具,配備了適當?shù)腻e誤消息和調試功能。然而,將這些工具配置得完全適合項目可能具有挑戰(zhàn)性,需要仔細考慮和定制。雖然與 React 相比,Preact 提供的調試信息相對較少,但它確保開發(fā)人員能夠有效地排除和診斷應用中的關鍵問題。

Preact 靈活的架構允許插件以任何想要的方式增強 Preact 體驗。其中 preact/debug 插件添加了幫助性的警告和錯誤信息且附加了 Preact Developer Tools 瀏覽器插件。這些能幫助開發(fā)者在開發(fā) Preact 應用時更容易發(fā)現(xiàn)問題。

Hooks

Preact 引入了與 React 類似的 Hooks,為管理函數(shù)組件的狀態(tài)和副作用提供了類似的功能。不過,Hooks 不是 Preact 核心的一部分。它們已被分離出來,以保持主包較小,因此需要單獨導入??梢詮?preact/hooks 或 preact/compat 中導入 Hook。

import { useState } from 'preact/hooks';

const App = () => {
  const [number, setNumber] = useState(0);
  const increment = () => setNumber(count + 1);
  const decrement = () => setNumber((currentNumber) => currentNumber - 1);

  return (
    <div>
      <p>Number: {Number}</p>
      <button onClick={increment}>Increment</button>
      <button onClick={decrement}>Decrement</button>
    </div>
  )
};

如何選擇?

在選擇Preact和React時,需要考慮多個因素,包括項目需求、性能要求、開發(fā)體驗、社區(qū)支持和生態(tài)系統(tǒng)等:

  • 項目需求:如果你的項目需要構建輕量級、高性能的應用,特別是針對移動端或低帶寬環(huán)境,Preact可能是一個更好的選擇。Preact的體積更小,渲染性能更好,適用于這些場景。然而,如果你的項目需要更豐富的功能和更大的社區(qū)支持,React可能更適合。
  • 性能要求:Preact在性能方面通常優(yōu)于React,特別是在大型應用中。Preact的代碼庫較小,內存占用和執(zhí)行時間更少,因此在某些情況下可能更快。如果你對性能有嚴格要求,Preact可能是一個更好的選擇。
  • 開發(fā)體驗:如果你已經(jīng)熟悉React,那么使用Preact將非常容易,因為Preact與React的API在很大程度上是兼容的。這意味著你可以利用你在React中學到的知識和經(jīng)驗來開發(fā)Preact應用。此外,Preact的社區(qū)正在穩(wěn)定增長,出現(xiàn)了許多示例、文檔和工具,這也將提高你的開發(fā)體驗。
  • 社區(qū)支持和生態(tài)系統(tǒng):React作為最受歡迎的JavaScript庫之一,擁有龐大的社區(qū)和豐富的生態(tài)系統(tǒng)。這意味著你可以找到大量的教程、庫、插件和社區(qū)支持來幫助你解決問題。相比之下,Preact的社區(qū)雖然也在增長,但相對較小。然而,Preact的社區(qū)仍然非?;钴S,并且正在不斷發(fā)展壯大。
責任編輯:姜華 來源: 前端充電寶
相關推薦

2015-11-03 10:32:47

ONOS開放網(wǎng)絡操作系統(tǒng)

2013-01-07 10:55:19

移動應用微軟蘋果

2011-04-25 09:57:44

Firefox 4

2012-05-08 09:47:08

Google PlayAndroid應用程序

2021-04-02 10:14:02

詐騙軟件Fleeceware軟應用

2024-08-30 12:56:03

2024-01-09 15:07:19

Shadcn UIJavaScrip前端項目

2021-05-21 15:42:23

手機智能安防出入口控制

2009-04-09 09:07:53

傲游瀏覽器下載量

2012-01-05 15:06:55

iPadAndroid平板

2011-10-25 14:45:19

AndroidiOS應用

2025-02-17 10:40:00

DeepSeek模型AI

2009-01-12 08:04:27

Windows 7DVD鏡像數(shù)量限制

2011-12-07 09:24:57

谷歌Android Mar應用

2011-10-19 17:30:28

黑莓App World應用下載量

2011-06-08 16:18:06

移動應用

2011-12-23 09:43:30

蘋果手機應用下載量

2011-11-02 09:07:03

Outfit7會說話的朋友Talking Tom

2010-07-21 09:27:55

手機應用

2011-06-07 07:11:13

App StoreWWDC蘋果
點贊
收藏

51CTO技術棧公眾號