精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

SolidJS硬氣的說:我比React還react

開發 前端
本文會比較SolidJS與React的異同,闡述他的獨特優勢,看完后不知道你會不會和我發出同樣的感嘆:這簡直比React還react(react譯為響應)。

[[408771]]

大家好,我是卡頌。

最近刷推時,有個老哥經常出現在「前端框架」相關推文下。

[[408772]]

一副憨厚的樣貌 

我想:“老哥你哪位?”

一查,原來是個框架作者,作品叫SolidJS[1]

[[408773]]

翻翻框架介紹,這句話成功吸引我的注意:

  • 支持現代前端特性,例如:JSX, Fragments, Context, Portals, Suspense, Streaming SSR, Progressive Hydration, Error Boundaries和Concurrent Rendering

我琢磨您不會是React在逃公主吧?這不能說和React類似,只能說完全一樣吧?

作為傳統中國人,秉承「來都來了」思想,我試用了一天,又看了下源碼,結果發現這個框架真是個寶藏框架。

本文會比較SolidJS與React的異同,闡述他的獨特優勢,看完后不知道你會不會和我發出同樣的感嘆:

  • 這簡直比React還react(react譯為響應)

相信看完本文后,不僅能認識一個新框架,還能對React有更深的認識。

開整!

初看很相似

讓我們從一個「計數器」的例子看看與React語法的差異:

  1. import { render } from "solid-js/web"
  2. import { createSignal } from "solid-js"
  3.  
  4. function Counter() { 
  5.   const [count, setCount] = createSignal(0); 
  6.    
  7.   const increment = () => setCount(count() + 1); 
  8.  
  9.   return ( 
  10.     <button type="button" onClick={increment}> 
  11.       {count()} 
  12.     </button> 
  13.   ); 
  14.  
  15. render(() => <Counter />, document.getElementById("app")); 

和React不同的地方:

  • useState改名成createSignal
  • 獲取count狀態從React中直接使用count變為通過方法調用,即:count()

難道僅僅是一個類React框架?

別急,讓我們從「編譯時」、「運行時」、「響應原理」三方面來看看。

編譯時大不同

React的編譯時很「薄」,基本只是編譯JSX語法。

而SolidJS則采用了類似Svelte的方案:在編譯時,將狀態更新編譯為獨立的DOM操作方法。

這樣做有什么好處?主要有兩點。

一定條件下的體積優勢

  • 你不需要為你沒使用的代碼付出代價

使用React時,即使沒有用到Hooks,其代碼也會出現在最終編譯后的代碼中。

而在SolidJS中,未使用的功能不會出現在編譯后的代碼中。

舉個例子,上面計時器的例子中,編譯后的代碼有一行是這樣:

  1. delegateEvents(["click"]); 

這行代碼的目的是在document上注冊click事件代理。

如果在計時器中沒有使用onClick,那么編譯后代碼中就不會有這一行。

有熱心網友對比了類似編譯時方案的Svelte與React之間「源代碼」與「編譯后代碼」的體積差異。

其中橫軸代表源代碼體積,縱軸代表編譯后代碼體積,紅色線條代表Svelte,藍色代表React:

可見,在臨界值(業務源代碼體積達到120kb)之前,編譯時方案有一定體積優勢。

由于SolidJS使用JSX描述視圖,比Svelte使用類似Vue的模版語法更靈活,所以在編譯時沒法做到Svelte一樣的極致編譯優化,使得其相比Svelte運行時更重一點。

這為他帶來了額外的好處:在真實項目(>120kb)中,SolidJS的代碼體積比Svelte小25%左右。

還真是,因禍得福?

更快的更新速度

我們知道,在React與Vue中存在一層「虛擬DOM」(React中叫Fiber樹)。

每當發生更新,「虛擬DOM」會進行比較(Diff算法),比較的結果會執行不同的DOM操作(增、刪、改)。

而SolidJS與Svelte在發生更新時,可以直接調用編譯好的DOM操作方法,省去了「虛擬DOM比較」這一步所消耗的時間。

舉個例子,上文的計時器,當點擊后,從觸發更新到視圖變化的調用棧如下:

觸發事件,更新狀態,更新視圖,一路調用走到底,清晰明了。

同樣的例子放到React中,調用棧如下:

左中右紅、綠、藍框調用棧分別對應:

  • 處理事件
  • 對比并生成Fiber樹
  • 根據對比結果執行DOM操作

可見,SolidJS的更新路徑比React短很多。

你問憑什么?這還得從其特殊的「響應原理」聊起。

響應原理

假設有個狀態name,初始值為KaSong。我們希望根據name渲染一個div。

SolidJS編譯后的代碼類似:

  1. const [name, setName] = createSignal("KaSong"); 
  2.  
  3. const el = document.createElement("div"); 
  4. createEffect(() => el.textContent = name()); 

其中createEffect類似React的useEffect。

由于其回調內依賴了name,所以當name改變后會觸發createEffect回調,改變el.textContent,造成DOM更新。

類似React的:

  1. useEffect(() => { 
  2.   el.textContent = name
  3. }, [name]) 

首屏渲染結果:

  1. <div>KaSong</div> 

 接下來,觸發更新:

  1. setName("XiaoMing")  

更新后結果:

  1. <div>XiaoMing</div> 

 為什么更新name后會觸發createEffect?

這里也沒有什么黑魔法,就是「訂閱發布」。

createEffect回調依賴name,所以會訂閱name的變化。

由于篇幅有限,實現細節咱下回細聊。

這里的關鍵在于,SolidJS的狀態具有「原子性」。

即狀態互相之間有依賴關系,他們形成局部的依賴圖。當改變一個狀態后,依賴圖中的其他狀態也會改變。

createEffect中如果使用了這些依賴,就會訂閱他們的變化。

當狀態改變后,createEffect回調會執行,進而執行具體的DOM方法,更新視圖。

「真」。「響應式更新」,指哪打哪,李云龍直呼內行。

有同學會問,React不是這樣么?

那我問你個問題:

為什么Hooks會有調用順序不能變的要求?

為什么useEffect回調會有閉包問題?

答案已經呼之欲出了:React只有在這些限制下才能實現「響應式」。

辛勞苦干React

有一個可能反直覺的知識:React并不關心哪個組件觸發了更新。

在React中,任何一個組件觸發更新(如調用this.setState),所有組件都會重新走一遍流程。因為需要構建一棵新的Fiber樹。

為了減少無意義的render,React內部有些優化策略用來判斷組件是否可以復用上次更新的Fiber節點(從而跳過render)。

同時,也提供了很多API(比如:useMemo、PureComponent...),讓開發者告訴他哪些組件可以跳過render。

如果說,SolidJS的更新流程像一個畫家,畫面中哪兒需要更新就往哪兒畫幾筆。

那么React的更新流程像是一個人拿相機拍一張照片,再拿這張照片和上次拍的照片找不同,最后把不同的地方更新了。

總結

今天,我們聊了SolidJS與React的差異,主要體現在三方面:

  • 編譯時
  • 運行時
  • 響應原理

不知道你喜歡這款:沒有Hooks順序限制、沒有useEffect閉包問題、沒有Fiber樹、比React更react的框架么?

如果你問我選哪個?當然,哪個給工資高我用哪個。

考資料

[1]SolidJS:

https://github.com/solidjs/solid

 

責任編輯:姜華 來源: 魔術師卡頌
相關推薦

2025-10-20 04:00:00

2022-05-16 08:00:55

ReactReact 18數組

2023-03-14 07:23:48

ReactJSX語法

2022-07-06 08:30:36

vuereactvdom

2024-05-20 08:49:07

ArkUI鴻蒙應用開發

2022-03-16 17:01:35

React18并發的React組件render

2022-12-01 17:17:09

React開發

2021-05-11 08:48:23

React Hooks前端

2021-04-26 06:03:07

Reacterror前端

2020-11-26 15:30:05

VueReac前端

2023-04-20 10:15:57

React組件Render

2019-04-19 11:56:48

框架AI開發

2024-03-06 11:14:13

ViteReact微前端

2025-07-01 00:00:00

2023-07-30 14:56:42

ReactJavaScript開發

2025-07-17 08:18:07

2023-07-07 08:02:48

TypeScript編譯器文檔

2016-03-17 09:45:17

react雙向綁定插件

2022-09-05 19:00:53

低代碼平臺React

2025-04-07 08:25:01

React復合組件組件模式
點贊
收藏

51CTO技術棧公眾號

久久综合久色欧美综合狠狠| 99国产精品久久久久久久| 色欧美片视频在线观看| 日韩国产精品一区二区三区| 一本色道久久综合亚洲| 欧美1区2区3区| 亚洲精品乱码久久久久久按摩观| 天天操天天摸天天爽| 麻豆免费在线观看| 成人av午夜电影| 国产成人+综合亚洲+天堂| 91人妻一区二区三区蜜臀| 伊人久久影院| 欧美日韩免费在线观看| 五月天男人天堂| 婷婷五月综合激情| 精品一区二区影视| 97视频在线免费观看| 精品国产大片大片大片| 亚洲精品小区久久久久久| 欧美日韩电影在线播放| 天堂…中文在线最新版在线| 91看片在线观看| 成人激情校园春色| 国产日本欧美一区| 黄色片免费观看视频| 亚洲电影在线一区二区三区| 亚洲性生活视频| 潘金莲一级淫片aaaaa| 99re久久| 日韩欧美国产黄色| 大荫蒂性生交片| 日本在线免费| 国产色产综合产在线视频| 国产伦精品一区二区三区四区视频 | 久久xxxx精品视频| 欧美日本高清一区| 欧美88888| 深爱激情久久| 亚洲精品视频久久| 免费的av网站| 91亚洲精品视频在线观看| 欧美猛男超大videosgay| 亚洲五月天综合| 女人高潮被爽到呻吟在线观看| 亚洲综合激情网| 超碰免费在线公开| 米奇精品一区二区三区| 国产女同性恋一区二区| 日本10禁啪啪无遮挡免费一区二区 | 中文字幕乱码在线| 一区二区三区亚洲变态调教大结局 | 91精品在线观看入口| 亚洲污视频在线观看| 成人午夜精品| 色嗨嗨av一区二区三区| 男人舔女人下面高潮视频| 蜜桃视频动漫在线播放| 欧美日韩国产一区二区三区| 久久久久久人妻一区二区三区| 亚洲区欧洲区| 夜夜夜精品看看| 国产女教师bbwbbwbbw| 18加网站在线| 亚洲福利视频三区| 久久久亚洲精品无码| 美女搞黄视频在线观看| 欧美性猛交xxxx乱大交极品| 国产精品亚洲αv天堂无码| 涩涩视频在线播放| 色婷婷久久久久swag精品| 国产免费人做人爱午夜视频| 免费成人美女女| 欧美色精品在线视频| 九九九九九国产| 天堂精品久久久久| 亚洲精品国产品国语在线| 性欧美成人播放77777| 免费精品国产的网站免费观看| 国产亚洲a∨片在线观看| 国产精品成人在线视频| 亚洲自拍偷拍网| 久久久久久久一区二区| 日产精品久久久久| 丝袜美腿高跟呻吟高潮一区| 国产日韩欧美日韩| 亚洲精品第五页| 337p粉嫩大胆色噜噜噜噜亚洲| 日韩精品一区二区三区四区五区| 在线a人片免费观看视频| 亚洲美女在线国产| 亚洲 高清 成人 动漫| 国产极品一区| 日韩视频中午一区| 女~淫辱の触手3d动漫| 久久美女视频| 久久久噜噜噜久噜久久| 无码无套少妇毛多18pxxxx| 久久 天天综合| 国产精品青青草| 黄色软件在线观看| 亚洲自拍欧美精品| 青青青国产在线视频| 国产亚洲高清一区| 亚洲精品福利免费在线观看| 日本二区三区视频| 国产欧美激情| 国产日韩中文在线| 日韩精品系列| 亚洲精品综合在线| 可以免费在线看黄的网站| 日本一区二区三区视频在线看 | 国模私拍视频在线观看| 精品三级av| 久久视频在线播放| 无码人妻一区二区三区免费| 成人一二三区视频| 宅男一区二区三区| 色综合一本到久久亚洲91| 亚洲第一级黄色片| 中文字幕av播放| 免费在线看成人av| 久久精品国产精品国产精品污| 色大18成网站www在线观看| 精品国产乱码久久久久久婷婷| 伊人免费视频二| 欧美色图在线播放| 91精品国产电影| 国产黄色免费大片| 中文字幕一区在线观看| 久久9精品区-无套内射无码| 91精品啪在线观看国产手机| 久热精品视频在线免费观看| 欧美性猛交xxxx乱大交hd| 成人成人成人在线视频| 影音先锋成人资源网站| 日本免费在线一区| 国产一区二区三区中文| 成人精品免费在线观看| aaa国产一区| 久久www视频| 久久精品国产福利| 在线观看日韩专区| 久久久久久久久久一级| 久久久久国产成人精品亚洲午夜| 免费看日本毛片| 国产精品天天看天天狠| 欧美激情欧美激情| 亚洲精品久久久久久动漫器材一区 | 久热国产在线| 7777精品伊人久久久大香线蕉经典版下载 | 日韩av一二三区| 成人av资源在线观看| 国产无限制自拍| 欧美日日夜夜| 2019中文字幕在线免费观看| 天堂在线一二区| 狠狠色狠色综合曰曰| 国产夫妻性爱视频| 久久精品五月| 日韩精品av一区二区三区| 在线成人视屏| 伊人青青综合网站| 国产精品久久久久久久一区二区| 亚洲欧洲日产国码二区| 在线a免费观看| 国产精品v日韩精品v欧美精品网站| 成人欧美一区二区三区黑人免费| 日本精品600av| 亚洲电影免费观看| 国产九色在线播放九色| 国产亚洲婷婷免费| 91 在线视频观看| 亚洲综合五月| 国内精品视频在线播放| 欧美福利在线播放| zzjj国产精品一区二区| 亚洲免费国产视频| 欧美日韩亚洲激情| av免费播放网站| 国产在线播放一区二区三区| 97在线免费视频观看| 美女视频亚洲色图| 国产精品久久久久久av福利软件| 天天综合视频在线观看| 精品少妇一区二区三区| 黄色一级片免费在线观看| 亚洲国产精品ⅴa在线观看| 国产精品999.| 国产精品普通话对白| 亚洲图片都市激情| 波多野结衣欧美| 国产精品免费福利| 麻豆视频在线观看免费网站| 亚洲成人国产精品| 波多野结衣人妻| 一区二区欧美精品| 亚洲成人黄色av| 国产精品自产自拍| 成人在线观看黄| 国产精品激情| 欧美一区1区三区3区公司| 亚洲高清在线一区| 国产精品96久久久久久又黄又硬 | 久久久之久亚州精品露出| 黄色毛片在线观看| 精品国产一区二区精华| 最新在线中文字幕| 午夜欧美2019年伦理 | 亚洲欧美区自拍先锋| 成人网站免费观看| 国产成人无遮挡在线视频| 欧美日韩亚洲一二三| 亚洲天堂成人| 在线免费观看成人网| 亚洲精品亚洲人成在线| 成人18视频| 亚洲欧洲日韩精品在线| 国产成人a亚洲精品| 免费影视亚洲| 久久影院中文字幕| 国产片在线观看| 日韩成人在线免费观看| www.麻豆av| 欧美日韩亚洲另类| 天天干天天色综合| 欧美日韩性生活视频| 久久久综合久久久| 亚洲欧美精品午睡沙发| 黄色激情小视频| 久久久久久久久久久电影| 男人网站在线观看| 国产美女精品一区二区三区| 国产视频手机在线播放| 久久精品1区| 国产二区视频在线播放| 亚洲高清不卡| av一区二区三区免费观看| 91久久久精品国产| 亚洲伊人婷婷| 欧美综合一区| 亚洲不卡1区| 久久av电影| 欧美成ee人免费视频| 日韩深夜福利| 蜜桃久久精品乱码一区二区 | 国产无套精品一区二区| 51vv免费精品视频一区二区| av成人观看| 一区二区三区视频免费视频观看网站 | 91香蕉视频在线播放| 国产精品卡一卡二卡三| 网爆门在线观看| 国产精品嫩草影院av蜜臀| 五月天婷婷丁香网| 一区免费观看视频| 26uuu成人网| 一区二区三区自拍| 国产一级二级毛片| 精品久久在线播放| 少妇高潮av久久久久久| 在线观看亚洲成人| 亚洲资源在线播放| 69久久99精品久久久久婷婷 | 免费在线小视频| 91av在线国产| 激情亚洲影院在线观看| 国产欧美精品在线播放| 国产精选久久| 国产精品一区二区三区在线观 | 欧美tk—视频vk| 天堂在线资源8| 亚洲欧美日韩精品久久亚洲区 | 麻豆国产精品va在线观看不卡| 中中文字幕av在线| 91精品国产91久久久| 香蕉成人av| 成人免费网站在线| 福利在线一区| 奇米888一区二区三区| 久久亚洲专区| 国产91沈先生在线播放| 久久综合网络一区二区| 欧美日韩一区二区三区69堂| 国产乱码字幕精品高清av| 精品久久久久一区二区| 国产女主播一区| 青娱乐国产在线| 欧美日韩中文在线| 一区二区三区午夜| 亚洲国产欧美一区| 不卡在线视频| 久久人人爽国产| 成人h在线观看| 国产99在线播放| 欧美美女视频| www.成年人视频| 美女一区二区三区在线观看| 欧美图片自拍偷拍| 亚洲国产精品av| 精品小视频在线观看| 欧美色男人天堂| 天堂av资源在线| 久久伊人精品一区二区三区| 欧美另类老肥妇| 91色视频在线导航| 蜜臀91精品国产高清在线观看| 9l视频自拍9l视频自拍| 免费亚洲一区| 精品国产一二区| 国产精品久久久久影院| 天天干天天干天天操| 日韩欧美亚洲国产另类 | 色偷偷噜噜噜亚洲男人| 女人高潮被爽到呻吟在线观看| 91社区国产高清| 欧美日韩国产一区二区三区不卡 | 2024最新电影在线免费观看| 国产成人av网| 你懂的在线观看一区二区| 在线观看三级网站| 青青草精品视频| 无套内谢大学处破女www小说| 亚洲自拍偷拍欧美| 国产美女三级无套内谢| 中文字幕av一区二区| 中文字幕在线看片| 国产精品久久久久av福利动漫| 欧美www视频在线观看| 一级黄色香蕉视频| 91免费版在线看| 日韩av电影网| 精品人在线二区三区| 菠萝菠萝蜜在线观看| 国产美女久久精品香蕉69| 欧美日韩中字| 免费黄色特级片| 久久久久久久久免费| 男人天堂2024| 亚洲精品电影久久久| 天堂av中文在线观看| 国产一级精品aaaaa看| 国产综合自拍| 国内自拍偷拍视频| 亚洲国产乱码最新视频| 亚洲欧美高清视频| 欧美精品videosex牲欧美| 日韩一级淫片| 屁屁影院ccyy国产第一页| 国产精品白丝av| 超碰手机在线观看| 日韩欧美国产wwwww| 色黄网站在线观看| 高清视频一区二区三区| 欧美视频一区| 久久久久亚洲无码| 欧美日韩性视频| 精品无人乱码| 国产精品久久久久av| 欧美大片aaaa| 亚洲色图欧美自拍| 亚洲一二三四在线| 午夜成人鲁丝片午夜精品| 日本精品久久久| 久久99久久人婷婷精品综合 | 精品裸体舞一区二区三区| 国产精品69xx| 久久久精品动漫| 日韩中文字幕一区二区三区| 三区四区在线观看| 宅男噜噜噜66一区二区66| 在线观看a级片| 国产精品污www一区二区三区| 亚洲综合三区| 一级在线观看视频| 欧美一级精品在线| 国产福利电影在线播放| 日韩在线三区| 国产一区二区三区四| 日干夜干天天干| 国产一区二区三区视频在线观看| 欧美一级免费| 你懂的av在线| 国产欧美日韩精品在线| av免费观看在线| 欧美一区二区三区精品电影| 成人高清av| 超碰人人cao| 色婷婷综合久久久中文一区二区 | 欧美激情一区二区三区四区| 99久久久久久久| 69**夜色精品国产69乱| 欧美视频网址| 久久人妻少妇嫩草av蜜桃| 色婷婷综合久久久中文一区二区| av免费看在线| 欧美一级二级三级九九九| 国产成人亚洲综合色影视| 无码人妻久久一区二区三区不卡| 久久69精品久久久久久久电影好|