精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

а天堂中文在线官网| 国产字幕在线观看| 国内自拍欧美| 一道本成人在线| 亚洲亚洲精品三区日韩精品在线视频| 国产成人精品白浆久久69| 激情欧美一区| 中文字幕视频在线免费欧美日韩综合在线看 | 成人在线免费小视频| 欧美一区二区三区成人| 大j8黑人w巨大888a片| 婷婷激情在线| 97国产精品videossex| 国产日韩中文在线| 天堂网一区二区三区| 亚洲精品a级片| 亚洲人成网站777色婷婷| 中文字幕55页| 秋霞国产精品| 婷婷中文字幕综合| 最新av在线免费观看| 深夜福利在线看| 国产精品88888| 国产精品美女午夜av| 日本三级午夜理伦三级三| 91精品国产91久久久久久密臀| 日韩激情av在线免费观看| 天天操精品视频| 日本一区二区三区视频在线| 舔着乳尖日韩一区| 成人午夜视频免费观看| 欧美边添边摸边做边爱免费| 久久这里只精品最新地址| 电影午夜精品一区二区三区| 中文字幕一区二区三区波野结| 免费在线观看成人av| 欧美激情影音先锋| 久久久久久久久毛片| 久久神马影院| 在线亚洲欧美视频| 国产精久久一区二区三区| 蜜臀av一区| 亚洲高清av在线| 日本中文字幕有码| 国产在线一区不卡| 在线不卡a资源高清| 日韩欧美黄色大片| 毛片免费看不卡网站| 激情成人中文字幕| 国内精品在线观看视频| heyzo在线播放| 性欧美大战久久久久久久久| 成人在线国产视频| 免费在线观看av电影| 亚洲一区二区三区三| 精品人妻人人做人人爽| 中文在线观看免费| 一区二区三区四区在线免费观看| 青青草影院在线观看| 成人黄色网址| 亚洲最快最全在线视频| 日韩欧美猛交xxxxx无码| 黄色免费在线看| 一区二区在线观看av| 99在线免费视频观看| mm视频在线视频| 精品福利在线看| 欧美污视频网站| 成人在线不卡| 91精品国产高清一区二区三区蜜臀| 毛片毛片毛片毛| 一区中文字幕| 精品亚洲国产成av人片传媒| 亚洲av无码一区二区二三区| 精品国精品国产自在久国产应用| 少妇激情综合网| 欧美日韩中文字幕在线观看| 日韩视频在线一区二区三区| 国产91在线播放| 国产精品一区二区免费视频| 成a人片国产精品| 免费在线成人av| 国产经典自拍视频在线观看| 亚洲欧洲av在线| 亚洲理论电影在线观看| 婷婷午夜社区一区| 91麻豆精品久久久久蜜臀| 黄色性视频网站| av永久不卡| 欧美日韩成人免费| 国产成人精品网| 日韩精品电影一区亚洲| 亚洲最大福利网站| 亚洲欧美日韩成人在线| 中文字幕成人av| 日本一区午夜艳熟免费| av成人免费| 337p日本欧洲亚洲大胆色噜噜| 成人午夜福利一区二区| 综合五月婷婷| 日本午夜在线亚洲.国产| 亚洲天堂中文在线| 99热精品一区二区| 熟女熟妇伦久久影院毛片一区二区| а_天堂中文在线| 欧美日韩午夜在线视频| 午夜免费福利影院| 天堂美国久久| 秋霞av国产精品一区| 国产黄色av网站| 国产免费成人在线视频| 国产日韩亚洲欧美在线| 国产精品99久久久久久董美香 | 都市激情一区| 婷婷综合五月天| 亚洲丝袜在线观看| 国产精品久久久一区二区三区| 在线免费观看黄色av| 欧美日韩色婷婷| 一级黄色大片免费看| 久久国产精品亚洲人一区二区三区| 久久久免费av| 国产婷婷一区二区三区久久| 中文字幕欧美国产| 免费在线激情视频| 欧美人妖视频| 欧美激情影音先锋| 亚洲AV午夜精品| 亚洲视频免费在线观看| 色免费在线视频| 国产乱码精品一区二区三区四区| 2021久久精品国产99国产精品| www.黄色av| 亚洲欧美日韩在线| 亚洲精品手机在线观看| 欧美精品系列| 国产精品jizz在线观看麻豆| 天堂中文字幕在线| 黑人狂躁日本妞一区二区三区 | 精品久久无码中文字幕| 自拍偷拍亚洲激情| 一级片黄色免费| 国产精品99久久久久久动医院| 国产精品久久久久久av福利| 国产高清视频在线观看| 欧美性xxxxxxx| 欧美 日本 国产| 性色av一区二区怡红| 久久久久久久久一区| 久久男人天堂| 日韩高清中文字幕| 欧美h在线观看| 久久精品日产第一区二区三区高清版 | 精品国产一区二区三区av性色| 欧洲第一无人区观看| 国产乱人伦精品一区二区在线观看 | 国产在线日韩在线| 色的视频在线免费看| 在线综合视频播放| 久久影院一区二区| 99久久99精品久久久久久 | 欧美性xxx| 一本一道久久a久久精品逆3p| 无码人妻熟妇av又粗又大| 国产日产欧美一区| gai在线观看免费高清| 亚洲精品电影| 国产精品免费观看高清| 国产无遮挡裸体视频在线观看| 亚洲国产另类久久精品| 国产99免费视频| 中文字幕在线视频一区| 日本人妻一区二区三区| 亚洲免费中文| 亚洲.欧美.日本.国产综合在线 | 欧美精品乱人伦久久久久久| 夫妻性生活毛片| 成人一级片在线观看| 成人久久久久久久久| 日韩在线观看电影完整版高清免费悬疑悬疑| 国产精品专区h在线观看| 国产三区在线观看| 亚洲精品国产精品国自产在线| 国产亚洲欧美日韩高清| 亚洲日本乱码在线观看| 青青草视频播放| 老司机免费视频一区二区| 国产精品日韩三级| 国产精品一国产精品| 成人精品在线视频| h片在线观看视频免费| 在线观看欧美日韩国产| 亚洲爱爱综合网| 91久久国产综合久久| 黄页网站免费观看| 久久久久久一二三区| 在线一区二区不卡| 久久激情婷婷| www.亚洲视频.com| 成人综合一区| 精品一区2区三区| 电影一区中文字幕| 国产99久久久欧美黑人 | 亚洲一区二区精品久久av| 日本综合在线观看| 成人18视频在线播放| 久久久精品高清| 久久xxxx精品视频| 97干在线视频| 欧美电影免费| 欧美一区二区三区四区五区六区| 日本超碰一区二区| 国产日本欧美一区二区三区在线| 国产在线观看www| 欧美成人激情图片网| a中文在线播放| 亚洲欧美成人精品| 天天操天天干天天操| 制服.丝袜.亚洲.中文.综合| www.欧美色| 婷婷成人综合网| 黄网站免费在线| 亚洲欧美日韩国产手机在线| 一区二区三区在线观看免费视频| 成人福利电影精品一区二区在线观看| 亚洲午夜激情影院| 日本欧美韩国一区三区| 免费日韩视频在线观看| 黑人一区二区| 日韩 欧美 视频| 欧美亚洲不卡| 少妇久久久久久被弄到高潮| 91精品二区| 久久av秘一区二区三区| 日韩精品欧美| 亚洲人成网站在线观看播放| 欧美日韩123| 欧美日韩日本网| 国产欧美亚洲精品a| 欧美日韩一区二区视频在线| 天堂成人娱乐在线视频免费播放网站| 国产精品免费一区二区三区在线观看| 日韩激情欧美| 国产精品美女诱惑| 国产精品三p一区二区| 国产精品久久精品视| 第四色中文综合网| 国产精品99久久久久久久| 成功精品影院| 精品乱码一区二区三区| 老司机在线精品视频| 国产自产精品| 亚洲系列另类av| 三区精品视频观看| 日韩精品二区| 老司机午夜网站| 欧美色图首页| 欧美 日韩 国产 高清| 国产精品久久久亚洲一区| 国产肥臀一区二区福利视频| 久久一区亚洲| www.久久久久久久久久久| 国产激情91久久精品导航 | 国产日韩精品一区二区三区在线| 好吊视频在线观看| 国产精品久久久久影院亚瑟 | 欧美在线观看18| 一二三四区在线| 日韩欧美国产小视频| 成人精品在线播放| 亚洲欧美在线播放| 欧美13一16娇小xxxx| 久久99精品久久久久久噜噜| 91桃色在线| 国产精品高清在线| 日韩高清在线观看一区二区| 蜜桃免费一区二区三区| 婷婷久久一区| 欧美精品一区二区三区三州| 日本sm残虐另类| 男人女人拔萝卜视频| 91免费看视频| a一级免费视频| 午夜日韩在线电影| 中文在线字幕av| 精品乱人伦小说| av在线收看| 久久久女女女女999久久| 欧美aaa视频| av在线不卡观看| 欧洲杯足球赛直播| 免费网站永久免费观看| 日日摸夜夜添夜夜添精品视频| 国产美女视频免费看| 95精品视频在线| 国产suv精品一区二区68| 欧美日韩亚洲视频| 国产欧美熟妇另类久久久 | 日韩一区二区三区在线| 日本一区高清| 欧美成人在线影院| 全亚洲第一av番号网站| 懂色一区二区三区av片| 色偷偷综合网| 50路60路老熟妇啪啪| 久久9999久久免费精品国产| 99精品国产一区二区三区| 亚洲毛片aa| 亚洲人www| 成人三级做爰av| 欧美国产乱子伦| 毛片视频网站在线观看| 日韩一级成人av| 在线观看av黄网站永久| 欧美在线激情网| 粉嫩av一区二区| 国产又爽又黄ai换脸| 日本网站在线观看一区二区三区| 成年女人免费视频| 亚洲天堂精品视频| 中文在线字幕免费观| 亚洲网站在线观看| 精品极品在线| 狠狠色噜噜狠狠狠狠色吗综合| 欧美久久一级| 中文字幕第三区| 亚洲人成7777| 亚洲天堂aaa| 日韩中文字幕不卡视频| 成人在线观看免费播放| 日本一区网站| 久久久蜜桃一区二区人| 国产国语性生话播放| 婷婷丁香激情综合| 人妻无码中文字幕| 久久久久成人网| av成人app永久免费| 成人一区二区av| 国产成人免费视| 久久免费在线观看视频| 欧美va天堂va视频va在线| 美女航空一级毛片在线播放| 不卡一区二区三区视频| 国产一区清纯| 日本不卡视频一区| 精品久久久久久久久久久| 人妻中文字幕一区| 91av视频在线| 国产91久久精品一区二区| 久热免费在线观看| 国产三级久久久| 亚洲手机在线观看| 欧美大胆在线视频| 一区二区三区在线资源| 亚洲人成无码网站久久99热国产 | 国语自产精品视频在线看8查询8| 亚洲午夜精品在线观看| 亚洲福中文字幕伊人影院| 五月天婷婷激情网| 国产成人精品最新| 色777狠狠狠综合伊人| 6080国产精品| 性久久久久久久久| 日韩av资源| 成人a在线视频| 欧美日韩国内| 极品白嫩丰满美女无套| 欧美中文字幕一二三区视频| 免费的黄网站在线观看| 97超碰人人看人人| 在线亚洲成人| 欧美视频一区二区在线| 日韩久久久久久| 依依综合在线| 一区中文字幕在线观看| 成人av电影免费观看| 日韩 国产 欧美| 久久伊人色综合| 欧美自拍视频| 在线观看岛国av| 亚洲国产精品天堂| 成人动漫在线免费观看| 亚洲综合自拍一区| 男女精品视频| 欧美色图亚洲视频| 亚洲午夜久久久久久久| 欧美精品三级在线| 男人天堂网视频| 亚洲乱码国产乱码精品精的特点| 网站黄在线观看| 91免费国产视频| 男女精品视频| 久久久www成人免费毛片| 中文字幕av一区中文字幕天堂| 日韩精品一区二区三区中文字幕| 91av资源网| 一区二区三区不卡视频| 国产女人在线观看| 国产精品久久一区二区三区| 日韩av不卡一区二区|