成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

這會是制約Svelte發展的最大因素么

開發 前端
最近2年,最受歡迎的「主意」便是Svelte帶來的「重編譯時」概念了。這也讓他成為StackOverflow21年開發者報告中最受歡迎的框架。本文要講的,就是個很可能制約Svelte生態發展的因素。

[[421840]]

大家好,我卡頌。

這些年前端框架一直呈螺旋狀發展。

具體來說,很多主流前端框架采用的技術實際上很早就被發明了。比如10年,「細粒度更新」就在Knockout中首創。

新框架的出現一般遵循:

一個新的「主意」 + 現有技術的排列組合

最近2年,最受歡迎的「主意」便是Svelte帶來的「重編譯時」概念了。

這也讓他成為StackOverflow21年開發者報告中最受歡迎的框架。

然而,開源界和工業界可能是兩幅光景:

開發者嘴上說著"哎呦,這個框架不錯哦",等到寫項目時身體卻很誠實的選擇了React。

這也不能怪開發者。畢竟,生態才是前端框架最重要的部分。

本文要講的,就是個很可能制約Svelte生態發展的因素。

從VUE聊起

當初VUE3在技術選型時,有個考慮的點是:

  • 要不要移除「虛擬DOM」,擁抱「重編譯時」

「虛擬DOM」的作用是:找到交互造成的UI變化的部分。

但是,VUE3采用「細粒度更新」,理論上只要粒度足夠細,就完全不需要「虛擬DOM」。

通常,依賴「虛擬DOM」的框架,「虛擬DOM」會占據運行時一大半工作量(比如React、VUE)。

如果能移除「虛擬DOM」能帶來如下好處:

打包后的框架代碼體積減少

運行時交互造成UI更新的流程更短

但是,VUE3最終保留了「虛擬DOM」,其中一個很重要的原因是:

  • 「虛擬DOM」能彌補「模版語言」的局限

虛擬DOM的優勢比如,當你需要在VUE中實現「布局組件」:

  1. <Layout level={1}> 
  2.   <div>1</div> 
  3.   <div>2</div> 
  4.   <Layout level={2}> 
  5.     <div>33</div> 
  6.     <div>44</div> 
  7.   </Layout> 
  8. </Layout> 

期望的效果是:嵌套在Layout中的結構有不同縮進。

輸出的HTML如下:

  1. <div class="layout"
  2.   <div class="layout--1"
  3.     <div>1</div> 
  4.     <div>2</div> 
  5.     <div class="layout"
  6.       <div class="layout--2"
  7.         <div>33</div> 
  8.         <div>44</div> 
  9.       </div> 
  10.     </div> 
  11.   </div> 
  12. </div> 

這需要用到slot特性。

但是注意這部分,需要根據組件傳入的level prop動態改變:

  1. <div class="layout--1"
  2.   // ... 
  3. </div> 

 比如:level = 1對應class="layout--1"。

單純使用「模版語法」,已經沒辦法描述這個特性了。

此時,就需要你手寫「render函數」。

所以,為了編寫復雜組件,VUE為開發者開放了「模版語法」與「手寫render函數」兩條路子。

之所以能有兩條路子,是因為這兩條路最終都通向「虛擬DOM」。

[[421841]]

前端框架生態中很重要的一環,便是組件庫的豐富程度了。

為了一個好用的組件庫換框架是常有的事。

所以,為了減少開發者編寫復雜組件的成本,VUE保留了「虛擬DOM」。

Svelte永遠閉上的門

作為和VUE一樣采用「模版語法」的框架,Svelte選擇「重編譯時」道路。

這就意味著他永遠拋棄了「虛擬DOM」,也拋棄了「虛擬DOM」帶來的靈活性。

在討論Render functions的PR[1]中,官方明確表示:

Svelte永遠不會考慮render函數

既然拋棄了「render函數」(以及背后的「虛擬DOM」),那么當編寫復雜組件時,唯一的出路便是:

  • 提供更多、更復雜的API以應對復雜場景

比如:對于slot特性,Svelte提供了4個API:

  • <slot>
  • <slot name="name">
  • $$slots
  • <slot key={value}>

反觀React,由于極度靈活,壓根沒有對應API。

我們可以大膽的推測,編寫復雜組件的成本:

React < VUE < ... < Svelte

總結

如果一個框架只是概念新奇,會得到一時的關注。

但是,只有在DX(開發者體驗)、UX(用戶體驗)都做到平衡的框架才能在工業界長久存在。

這一點上,Svelte任重道遠。

參考資料

[1]討論Render functions的PR:

https://github.com/sveltejs/svelte/issues/4971

 

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

2017-02-05 14:49:39

2018-12-03 08:54:09

數據中心微軟技術

2016-11-09 15:13:57

大數據鄂維南大數據行業

2016-11-10 09:19:59

大數據制約發展

2012-06-12 16:37:36

Linux操作系統

2021-04-06 14:01:19

人工智能AI

2013-01-18 10:20:21

盜版移動閱讀iReader

2019-02-11 13:57:26

比特幣網絡加密貨幣

2020-03-12 18:12:10

Google FuchAndroid移動應用

2015-10-30 11:36:18

可穿戴設備大數據

2009-06-29 19:26:50

刀片服務器數據中心服務器

2022-12-28 07:33:18

項目Spring架構

2017-12-07 20:34:07

2013-04-15 09:44:00

電線電纜光纖網絡

2015-11-23 09:50:25

包月計費公有云IDC

2018-05-03 07:38:55

多云公有云SaaS

2024-01-23 15:23:06

數據中心服務器電力基礎設施

2015-06-19 15:35:25

SDN非技術

2021-02-02 21:32:49

區塊鏈醫療科技
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产粉嫩尤物极品99综合精品 | 国产在线观看一区二区 | 91麻豆精品国产91久久久久久 | 久久久久久久久久久久久九 | 欧美亚洲视频 | 一级在线免费观看 | 操亚洲| 日韩欧美在线免费观看视频 | 高清黄色| 玖玖综合网 | 久久机热| 久久久久久久夜 | 国产高清视频在线 | 日韩一二区在线 | 一区二区三区在线免费观看 | 日本中文字幕在线视频 | 午夜精品久久 | 日本精品视频 | 日本精品免费在线观看 | 国产精品成人久久久久 | 国产伦精品一区二区三区视频金莲 | 精品国产一级 | 国产小视频在线 | 999久久久免费精品国产 | 亚洲精品日韩综合观看成人91 | 狠狠入ady亚洲精品经典电影 | 国产高清在线精品一区二区三区 | 国产真实乱全部视频 | 日韩欧美三级 | 操视频网站 | 成人av色 | 亚洲视频手机在线 | 国产免费一区 | 国产精品日韩在线观看 | 亚洲精品久| 一区二区三区不卡视频 | 美女中文字幕视频 | 久久精品久久精品 | 在线日韩视频 | 久久精品女人天堂av | 一本色道久久综合亚洲精品高清 |