[前端] 網頁開發框架: Svelte

Svelte
https://github.com/sveltejs/svelte

Svelte web
https://svelte.dev/

如何看待 svelte 這個前端框架?
https://www.zhihu.com/question/53150351

[新框架] SVELTE入門介紹
https://technologytw.com/2019/03/28357/

網頁元件開發框架Svelte 3釋出,強調回應性
https://www.ithome.com.tw/news/130180

InfoQ訪談:前端框架Svelte 3將反應性移入JavaScript語言
https://www.infoq.cn/article/aqdCer7-OKrHdOvsF0sm

被稱為“三大框架”替代方案,Svelte 如何簡化 Web 開發工作(上)
https://www.infoq.cn/article/5CFUiuLA3pry1xyz3Twq

被稱為“三大框架”替代方案,Svelte 如何簡化 Web 開發工作(下)
https://www.infoq.cn/article/YCKvxXX6DzpvuP3FQ06k

Svelte 是一個編譯時框架,作者是 Rich Harris,也就是 Ractive, Rollup 和 Buble 的作者,堪稱前端界的輪子哥。這個框架的 API 設計是從 Ractive 那邊傳承過來的(自然跟 Vue 也非常像),Svelte 的核心思想在於『通過靜態編譯減少框架運行時的代碼量』。

舉例來說,當前的框架無論是 React Angular 還是 Vue,不管你怎麼編譯,使用的時候必然需要『引入』框架本身,也就是所謂的運行時 (runtime)。但是 Svelte 元件編譯了以後,所有需要的運行時代碼都包含在裡面了,除了引入這個元件本身,你不需要再額外引入一個所謂的框架運行時runtime包。

出於兩個原因這個代價可以變得很小:
1. Svelte 的編譯風格是將範本編譯為命令式 (imperative) 的原生 DOM 操作。
2. 對於特定功能,Svelte 依然有對應的運行時代碼,比如元件邏輯,if/else 切換邏輯,迴圈邏輯等等... 但它在編譯時,如果一個功能沒用到,對應的代碼就根本不會被編譯到結果裡去,像用 lodash 或者 RxJS 的時候能選擇性地引入對應的函數。

Svelte 3現在可以真正達成回應性程式設計,使用不同於React以Hooks來達成類似的效果,不會增加瀏覽器垃圾回收的負擔,在建置階段會將元件轉換成高效能的執行碼以更新DOM。這跟傳統框架,讓開發者撰寫宣告式狀態驅動(State-Driven)程式碼不同,Svelte或許可以用來打造更大型的高效能應用程式。


#Javascript, Svelte, Imperative, Ractive, DOM, Vue, Rollup, Rich Harris

留言