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

Signal:更多前端框架的選擇

開發 前端
Signal的技術在10年前Knockout框架中就有應用。為什么這項技術正受到越來越多前端框架的青睞?

Signal:更多前端框架的選擇

大家好,我卡頌。

最近,Angular?、Qwik?的作者「MI?KO HEVERY」發文表示Signal是前端框架的未來[1],并考慮在Angular中實現它。

在此之前,Vue?、Solid.js?、Preact?、Svelte?都已實現Signal?。實際上,signal并不是一個新概念,他還有很多別名,比如:

  •  響應式更新
  •  細粒度更新

如果你了解過Vue?響應式更新的實現原理,對Signal就不會陌生。

實際上,Signal?的技術在10年前Knockout框架中就有應用。為什么這項技術正受到越來越多前端框架的青睞?

本文,讓我們一起探討下這個話題。

signal的本質

signal?的本質,是將「對狀態的引用」以及「對狀態值的獲取」分離開。這么說可能有點抽象,讓我們先看一個非signal的例子。

以下是React中定義狀態的方式:

function App() {
const [state, dispatch] = useState(0);
return <p onClick={
() => dispatch(state + 1)
}>{state}</p>
}

useState的返回值包括兩部分:

  • state:狀態的值
  • dispatch?:狀態的setter

可以發現,state耦合了「對狀態的引用」以及「對狀態值的獲取」這兩個含義。

再來看一個signal?的例子。以下是同一個例子用Solid.js書寫的樣子:

function App() {
const [getState, dispatch] = createSignal(0);
return <p onClick={
() => dispatch(getState() + 1)
}>{getState()}</p>
}

createSignal的返回值包括兩部分:

  •  getState:對狀態的引用
  •  dispatch:狀態的setter

區別就體現在getState上,其中:

  • getState是對狀態的引用
  • getState()是對狀態值的獲取

也就是說,我們可以不必立刻獲取狀態的值,而是在需要的時候再獲取(即在需要時再執行getState())。

這么做有什么好處呢?如果我們在需要的時候再獲取狀態的值,就能感知當前的上下文環境。

舉個很粗糙的例子,在下面的代碼中,組件實例(Component實例)在render時會將全局變量cpnContext指向自己:

let cpnContext = null;

class Component {
render() {
cpnContext = this;
// ...省略邏輯
}
}

那么在createSignal返回的getState方法內部,可以獲取全局變量cpnContext來感知當前處于哪個組件的渲染流程:

function createSignal() {
// ...省略邏輯
function getState() {
const curContext = cpnContext;
// ...
}
function dispatch {}
return [getState, dispatch]
}

這么做的目的是建立「狀態變化」與「需要更新哪個組件」之間的聯系。

相比于React?,基于Signal實現的框架會有兩個優勢:

  •  更好的細粒度更新性能
  •  更好的DX(開發者體驗)

更好的細粒度更新性能

由于Signal建立了狀態與組件之間的聯系,所以相比于React更有性能優勢。

比如,在我的電腦上,用Svelte渲染1w個li,點擊某個li后改變他的內容:

<ul>
{#each items as item (item.id)}
<li on:click={() => items[item.id].name = 'change!'}>{item.name}</li>
{/each}
</ul>

從點擊事件觸發,到Svelte邏輯運行完,再到瀏覽器重排重繪,總用時18.88ms,其中Svelte的邏輯執行只花了9.5ms:

圖片

同樣的例子用React實現,觸發點擊后總用時98.5ms,其中React的邏輯執行了89.38ms:

圖片

在這個例子中,React?性能比Svelte差了一個數量級。之所以會有這樣的差異,很大一部分原因在于「Svlete在更新前就知道狀態變化時需要更新哪個組件」。

而這一切的源頭就在于Signal。

更好的DX

更好的開發者體驗主要體現在兩方面:

1、Signal感知上下文環境的能力減少了代碼心智負擔。

比如在React中,useEffect在使用時需要指明依賴的狀態:

useEffect(() => {
// ...state1, state2變化后的邏輯
}, [state1, state2])

如果采用Signal的實現,狀態能感知到自己在useEffect上下文環境,可以自動建立兩者之間的聯系,不用再擔心少寫依賴狀態、閉包陷阱等問題,減少心智負擔。

比如在Vue中,類似useEffect(僅僅是功能類似,兩者的用途其實是不同的)的watch,就不需要顯式指明依賴:

<script setup>
import { ref, watch } from 'vue'

const name = ref('')

watch(name, (newName, oldName) => {
// ...省略邏輯
})
</script>

2、減少開發者性能優化的心智負擔

使用Signal的框架通常能獲得不錯的運行時性能,所以不需要額外的性能優化API。反觀React,開發者如果遇到性能問題,需要手動調用性能優化API(比如React.memo、useMemo、PureComponent)。

總結

有以上這么多優點,難怪很多框架都使用了Signal?。那么React對Signal是什么態度呢?

React團隊成員對此的觀點是:

  1.  有可能引入類似Signal的原語
  2. Signal?性能確實好,但他不太符合React的理念?

圖片

React的理念可以用一句話概括:「UI反映狀態在某一刻的快照」。

既然是快照,那就不是局部的,而是個整體概念。在React?中,狀態更新會引起整個應用重新render?,就是對React快照理念的最好詮釋。

React?現階段的所有實現都是基于快照理念。所以,即使引入類似Signal?的原語,可能也是類似Mobx這樣的上層實現,而不是從底層重構。

我個人比較傾向于認為:React?團隊承認Signal的優點,但由于積重難返,而且現代設備的性能通常是過剩的,所以性能問題并不是首要問題。

如果這個觀點是正確的,那么React?可能會在開發者體驗(Signal的另一個優點)方面努努力。比如去年提出的RFC: useEvent[2]可能就是這方面的一次嘗試。

參考資料

[1]Signal是前端框架的未來:https://www.builder.io/blog/usesignal-is-the-future-of-web-frameworks#code-use-ref-code-does-not-render。

[2]RFC: useEvent:https://github.com/reactjs/rfcs/pull/220。

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

2021-12-06 15:35:01

CSS前端開發

2015-04-17 15:56:15

戴爾云計算

2013-10-24 10:40:23

前端框架

2023-02-20 08:41:08

SignaluseState()

2015-09-25 10:23:06

SDN

2024-12-27 10:20:54

2022-01-06 22:04:03

JavaScript語言開發

2010-05-19 14:38:11

Web開發框架Web層

2018-06-10 15:45:40

物聯網IoT工業

2019-07-17 22:07:14

前端開發框架

2016-07-06 11:13:02

云計算

2015-07-13 13:47:34

以太網標準帶寬

2010-08-05 14:32:16

Flex框架

2013-01-16 11:35:05

Latitude 10平板電腦

2010-05-24 13:14:16

開放思杰云計算

2020-04-14 15:54:07

5G物聯網Wi-Fi

2020-09-08 10:28:28

云計算云平臺

2010-04-15 04:05:25

惠普UNIXTCO

2022-09-07 21:31:19

微前端架構iframe

2019-01-31 11:11:30

前端開發框架
點贊
收藏

51CTO技術棧公眾號

亚洲精品久久久久久久久久久久久 | 国产精品久久久久无码av色戒| 黑人玩欧美人三根一起进| 成人午夜视频在线| 全球成人中文在线| 欧日韩不卡视频| 榴莲视频成人app| 五月综合激情婷婷六月色窝| 免费成人av网站| 中文字幕一区二区在线视频| 欧美黄免费看| 亚洲欧美国产视频| 人人爽人人爽av| 日本在线啊啊| 亚洲嫩草精品久久| 牛人盗摄一区二区三区视频| 91av久久久| 亚洲最黄网站| 久久亚洲精品小早川怜子66| 美女又爽又黄视频毛茸茸| 99国内精品久久久久| 欧美午夜电影在线| 麻豆中文字幕在线观看| 天堂在线视频免费观看| 激情综合色综合久久| 国产91成人在在线播放| 国产真实乱在线更新| 中文字幕亚洲影视| 亚洲第一精品福利| 午夜福利123| 成人免费毛片嘿嘿连载视频…| 亚洲国产一区视频| 成人在线观看www| 黄色免费在线播放| 成人精品小蝌蚪| 91在线播放国产| 久久精品视频2| 亚洲国产激情| 九色91av视频| av黄色免费在线观看| 九九免费精品视频在线观看| 精品国产乱码久久久久久牛牛| 黄大色黄女片18第一次| 神马电影网我不卡| 日韩欧美亚洲成人| 日韩伦理在线免费观看| gogogogo高清视频在线| 国产精品毛片大码女人| 亚洲国产高清国产精品| 国产专区在线| 国产亚洲欧美激情| 热re99久久精品国产99热| 天堂中文资源在线| 9色porny自拍视频一区二区| 国产成人精品福利一区二区三区 | 成人免费看黄网站| 又骚又黄的视频| 热久久一区二区| 国产精品极品美女粉嫩高清在线| 中文在线第一页| 一区二区福利| 国产91成人在在线播放| 在线视频一区二区三区四区| 亚洲欧美bt| 国产精品wwwwww| 成人免费视频国产免费| 日产欧产美韩系列久久99| 国产精品18久久久久久麻辣| 亚洲av人无码激艳猛片服务器| 青青草成人在线观看| 国产欧美精品一区二区| 国产精品久久影视| 国产成人av电影免费在线观看| 国产精品免费观看高清| 天天操天天操天天干| 久久一区二区视频| 性刺激综合网| 国产在线激情| 亚洲一区自拍偷拍| 欧美 日韩 国产一区| 精品3atv在线视频| 91麻豆精品国产91久久久更新时间| 黄色小视频免费网站| 亚洲大奶少妇| 亚洲精品www| 在线观看免费小视频| 四虎成人av| 欧美激情综合亚洲一二区| 亚洲精品男人的天堂| 蜜芽一区二区三区| 成人自拍偷拍| 精品亚洲成a人片在线观看| 国产精品欧美久久久久一区二区| 亚洲黄色网址在线观看| 91av久久| 欧美日韩一区视频| 欧美丰满熟妇bbb久久久| 久久99蜜桃| xx视频.9999.com| 欧美日韩综合在线观看| 蜜桃视频在线观看一区二区| 国产精品久久久久久久久久久久冷| 女人天堂在线| 一区二区三区四区亚洲| 日本www高清视频| 日韩精品中文字幕一区二区| 亚洲欧美日韩第一区| 国产日韩欧美在线观看视频| 一本色道久久综合亚洲精品不卡| 国产日韩专区在线| 秋霞视频一区二区| 国产精品成人网| av黄色在线网站| 精品视频国内| 亚洲色图在线观看| 国产中文字幕免费| 免费成人美女在线观看.| 精品免费二区三区三区高中清不卡 | 国产极品在线观看| 欧美精品色综合| 欧美高清性xxxx| 亚洲欧美在线专区| 国产精品精品久久久久久| 亚洲国产精品久久久久久6q| 国产精品欧美久久久久无广告| 99热在线这里只有精品| 91九色鹿精品国产综合久久香蕉| 中文字幕一区二区精品| 在线能看的av| 国产成人免费网站| av动漫免费观看| 日韩精品99| 亚洲国产精品悠悠久久琪琪| 欧美卡一卡二卡三| 精品一区二区三区不卡| 色狠狠久久av五月综合| 伊人久久在线| 日韩av最新在线观看| 欧美精品久久久久性色| 国产精品一区在线| 中文字幕一区二区三区在线乱码| 欧美成a人片在线观看久| 亚洲精品乱码久久久久久按摩观| 黄色一级片在线免费观看| 韩国视频一区二区| 樱空桃在线播放| 欧美综合影院| 最近的2019中文字幕免费一页| www.国产毛片| 久久综合色鬼综合色| 浮妇高潮喷白浆视频| 日韩免费电影在线观看| 欧美有码在线观看| 国产一级二级三级在线观看| 日本精品视频一区二区三区| 亚洲最大成人网站| 日精品一区二区| 日韩精品欧美一区二区三区| 蜜桃精品在线| 中文字幕久精品免费视频| 中文字幕 亚洲视频| 中文av一区二区| 日韩中文字幕a| 99久久视频| 亚洲最大福利网站| 丰乳肥臀在线| 精品小视频在线| 免费的毛片视频| 中文一区二区完整视频在线观看| 日本不卡一区二区在线观看| 久久精品免费一区二区三区| 91精品国产综合久久久久久丝袜| 51精品视频| 亚洲欧美成人在线| 做爰无遮挡三级| 亚洲欧美偷拍三级| 中文在线观看免费视频| 日日欢夜夜爽一区| 一本二本三本亚洲码| 最新精品在线| 欧美洲成人男女午夜视频| 国产精品一区二区三区四区色| 欧美三级日韩在线| 欧美日韩在线视频免费| 91视频91自| 日本不卡一区在线| 欧美午夜国产| 操人视频欧美| japanese23hdxxxx日韩| 久久天天躁夜夜躁狠狠躁2022| 人人妻人人澡人人爽精品日本| 一本大道av伊人久久综合| 黄色录像免费观看| 97精品久久久午夜一区二区三区| 在线观看免费av网址| 亚洲黄页一区| 一区精品在线| 卡通动漫精品一区二区三区| 国产美女精品视频免费观看| 波多野结衣中文字幕久久| 中文字幕日韩欧美在线| 成人免费视频国产| 欧美日韩一区二区三区不卡| 国产精品成人久久| 国产精品久久久久一区二区三区| 中文字幕一区三区久久女搜查官| 毛片av一区二区| 久久久久久久久久网| 天天综合网网欲色| 日本电影一区二区三区| 高清欧美性猛交xxxx黑人猛| 成人高清视频观看www| 忘忧草在线日韩www影院| 久久视频免费在线播放| 欧美日韩国产中文字幕在线| 精品久久久久久久久久久久久久久 | 欧美成人精品在线播放| 国产原创av在线| 亚洲精品一区二区三区影院| 91麻豆国产在线| 色婷婷精品大在线视频| 国产黄色片视频| 成人免费在线播放视频| 成人在线一级片| av不卡免费在线观看| 国产一级二级av| 久久国产婷婷国产香蕉| 免费观看成人在线视频| 国产精品乱看| 免费一级特黄毛片| 韩日在线一区| www婷婷av久久久影片| 99久久久久久中文字幕一区| 性欧美精品一区二区三区在线播放 | 五月婷婷激情综合网| 久久久久久久久久网站| 国产精品日日摸夜夜摸av| 青青草福利视频| 91片黄在线观看| 亚洲中文字幕无码一区| 成人免费观看男女羞羞视频| 四虎国产精品永久免费观看视频| 国产一级精品在线| 午夜av中文字幕| 经典一区二区三区| 亚洲欧美视频二区| 久久精品国产秦先生| 一道本在线免费视频| 日本美女一区二区| 成人免费在线观看视频网站| 日日噜噜夜夜狠狠视频欧美人| 成人在线免费播放视频| 日韩av中文在线观看| 欧在线一二三四区| 日韩不卡在线观看日韩不卡视频| 日本熟妇人妻xxxxx| 日本免费新一区视频| 五月天激情播播| 狠狠色狠狠色综合| 波多野结衣免费观看| 国产剧情一区在线| 国产成人av片| 波多野结衣在线一区| 91精品国产自产| 久久久久久久久久久99999| 色欲狠狠躁天天躁无码中文字幕| 日本一区二区三区在线不卡| 成人信息集中地| 亚洲免费观看高清完整| 国产精品不卡av| 色综合久久88色综合天天免费| 日本一区二区三区久久| 欧美老女人在线| 亚洲精品久久久久久久久久久久久久| 精品久久久久久久久久久久久久久久久| 香蕉av在线播放| 亚洲一区二区国产| a级网站在线播放| 午夜精品福利电影| 日本在线精品| 91日本在线观看| 国产精品久av福利在线观看| 日本10禁啪啪无遮挡免费一区二区| 国产精品久久久久久久久久10秀| 少妇大叫太大太粗太爽了a片小说| 在线视频精品| 五月婷婷丁香综合网| 国产69精品久久久久777| 少妇真人直播免费视频| 亚洲精品自拍动漫在线| 日韩 欧美 中文| 91麻豆精品国产91久久久久久| 天堂av资源在线| 日韩中文字幕免费视频| 国产精品vvv| 国产拍精品一二三| 卡通动漫国产精品| 99精品视频网站| 国产手机视频一区二区| 一区二区三区四区毛片| av不卡在线播放| 中文字幕五月天| 欧美色另类天堂2015| av片免费播放| 亚洲色图色老头| av在线不卡免费| 亚洲va电影大全| av伊人久久| 欧美 日韩 国产在线观看| 国产精品66部| 国产极品视频在线观看| 亚洲va欧美va天堂v国产综合| 亚洲影视一区二区| 亚洲裸体xxxx| 国产丝袜在线播放| 91久久嫩草影院一区二区| 美女亚洲一区| 国产美女在线一区| 国产一区二三区| 纪美影视在线观看电视版使用方法| 午夜久久久久久久久| 精品国产乱码一区二区三| 中文字幕精品在线| 欧美aaa大片视频一二区| 极品尤物一区二区三区| 午夜精品视频| 一区二区久久精品| 中文字幕欧美三区| 天堂网免费视频| 日韩精品视频在线观看网址| segui88久久综合9999| 超碰97网站| 综合亚洲视频| 亚洲天堂av一区二区三区| 国产精品伦理在线| 中国女人真人一级毛片| 亚洲夜晚福利在线观看| 成人短视频app| 九色91在线视频| 国产日韩一区| 中文字幕在线免费看线人| 午夜精品一区二区三区免费视频 | 久久青草伊人| 精品乱码一区| 久久99伊人| 亚洲激情视频小说| 色哟哟精品一区| 韩国三级av在线免费观看| 日韩美女毛茸茸| 国产精品一在线观看| 日韩视频免费在线播放| 国产欧美视频一区二区| 成人黄色三级视频| 在线播放日韩精品| 开心久久婷婷综合中文字幕| 在线观看成人av| 国产综合久久久久久鬼色| xxxx日本少妇| 欧美不卡一区二区三区四区| 日本在线视频网址| 国产一区在线观| 国产欧美日韩综合一区在线播放| 精品人妻一区二区三区视频| 色诱亚洲精品久久久久久| jizz亚洲| 亚洲自拍偷拍色片视频| 亚洲精品三级| 人人妻人人藻人人爽欧美一区| 色88888久久久久久影院按摩| 日韩三级影院| 99蜜桃在线观看免费视频网站| 亚洲伦伦在线| 国产一级久久久久毛片精品| 欧美精选一区二区| 日本h片在线| 免费看国产精品一二区视频| 日韩av网站在线观看| 午夜剧场免费在线观看| 亚洲成人精品在线| 国产福利亚洲| 日韩国产成人无码av毛片| 久久精品人人做| 国产麻豆免费观看| 7777kkkk成人观看| 欧美肥老太太性生活| 在线播放av网址| 在线免费观看成人短视频| 成人av黄色| 国产伦精品一区二区三| 日本欧美一区二区三区| 久久久久久久九九九九| 亚洲午夜av电影| 91精品短视频| 久久99爱视频| 午夜精品福利久久久| 秋霞影院午夜丰满少妇在线视频| 国产美女精品在线观看| 男女男精品网站| 国产无人区码熟妇毛片多| 日韩视频免费在线观看|