Builder.io 的 CTO、Angular、Qwik 的作者 Miško Hevery 近日發文表示 Signals 是前端框架的未來。
尤大也在 Vue 官網上添加了 Connection to Signals 部分。將目前實現 Signals 的框架:Solid、Angular、Preact、Qwik 與 Vue 進行了一波對比。
其中 Preact 和 Qwik 的 API 設計與 Vue 的 shallowRef 類似。Solid 的 createSignal() API 設計強調了讀、寫隔離,暴露 getter、setter。Angular 放棄了髒檢查,引入了自己的響應式實現
與 Vue 的 refs 相比,Solid 和 Angular 基於 getter 的 API 風格提供了一些有趣的權衡:
-
()
雖然比.value
寫起來更省事兒,但是更新值的時候比較囉嗦。 - 沒有
ref-unwrapping
(解包),訪問值總是需要()
,這使得值在任何地方訪問都是一致的。這也意味着你可以將原始的 signals 作爲組件的 props 傳遞下去。
用 Vue 的 shallowRef 和 triggerRef 也可以實現類似 Solid 和 Angular 的 API。