Hello,大家好,我是 Sunday。
今天咱們來看 TC39 的新提案 Signals 信號。該提案主要應用在 狀態管理 相關的場景下,可以結合目前狀態管理工具(Vuex、Pinia、Redux、MobX 或者是單純的 ref(Vue3 中聲明響應式數據的方案) 等)實現全新的解決方案。
目前猶大也在 vue 官網中提供了 Connection to Signals(與信號 (signal) 的聯系) 的概念,并提到 Signal 的重要性
那么下面咱們就來看看這個 Signal 到底是個什么東西。
想要了解 Signal 咱們先來看看 TC39 提案!
TC39 提案是指由ECMAScript(JavaScript的標準)技術委員會TC39(Technical Committee 39)提出的標準改進建議。TC39負責JavaScript語言的演進和標準化工作。一個提案從最初的想法到最終成為標準,需要經過多個階段的審核和修改。以下是提案的各個階段:
要開發復雜的用戶界面 (UI),JavaScript 應用程序開發人員需要以高效的方式 存儲、計算、使狀態失效、同步并將狀態推送到應用程序的視圖層。UI 通常不僅僅涉及管理簡單的值,還經常涉及渲染計算狀態,而計算狀態依賴于其他值或狀態的復雜樹,而這些值或狀態本身也是計算出來的。
Signals 的目標是提供用于管理此類應用程序狀態的基礎設施,以便開發人員可以專注于業務邏輯,而不是這些重復的細節。
咱們來看一個例子(基于 preact):
import { signal } from "@preact/signals";const count = signal(0);// 通過訪問.Value讀取信號的值:console.log(count.value); // 0// 更新信號的值count.value += 1;// 訪問值也必須要有 .valueconsole.log(count.value); // 1
通過以上代碼我們可以看出來 Signals 與 vue 中的 ref 使用是有些類似的。它們都需要通過一個方法進行初始化,同時訪問的時候需要 .value
除了我們剛才看到的 preact 之外,還有很多的框架也實現了 Signals。比如:
從根本上說,Signals 是與 Vue 中的 ref 相同的響應性基礎類型(再前面我們也看到了類似的代碼例子)。**Signals是一個在訪問時跟蹤依賴、在變更時觸發副作用的值容器。
這種基于響應性基礎類型的范式在前端領域并不是一個特別新的概念:它可以追溯到十多年前的 Knockout observables 和 Meteor Tracker 等實現。
Vue 的選項式 API 和 React 的狀態管理庫 MobX 也是基于同樣的原則,只不過將基礎類型這部分隱藏在了對象屬性背后。
本文鏈接:http://www.tebozhan.com/showinfo-26-96424-0.htmlTC39全新提案【Signals】V0草案已公布,狀態管理將迎來全新革命?
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com
下一篇: 五分鐘了解 LangChain 的路由鏈