[簡單翻譯]Vue Composition API RFC

Composition API RFC

Composition API RFC

Why Composition APi

Vue2.0是基于options的Api, 為甚3.0使用了Composition Api呢?
主要是出于兩點考慮:
1.Code Organization
2.Logic Reuse
其他原因:

  1. Plugin Development

Code Organization

Options: 在一個功能復雜的組件里,基于options寫的組件中笛辟,實現(xiàn)其中某個具體小邏輯的代碼分散在組件中的多處(data, methods, props, computed等),可讀性極其低。

Composition Api: 一個function融合了data,methods,computed等捻勉,實現(xiàn)了一個小邏輯,在IDE中還可以折疊刀森,看上去十分友好。

以下貼上官方的代碼對比圖:


1576576863827.jpg

Logic Reuse

上面也分析到了报账,composition Api將邏輯都封裝在了一個function里研底,我們可以很容易的將function遷移到外部文件,然后在使用到的組件里import進來透罢,達到邏輯的抽離和復用榜晦。

在vue2.0中有以下幾種方式可以實現(xiàn)復用:
1.mixins
2.HOC
3.renderless components (via scoped slots)
但是以上方式都有各自的缺點

pattern 屬性來源不清晰 命名沖突 性能消耗(需要創(chuàng)建組件實例)
mixins yes yes no
HOC no yes yes
renderless components no no yes
Composition Api no no no

Plugin Development

2.0: 插件都是通過mixin的方式注入到this實例上,由于每個插件都要求用戶增加注入屬性的Vue類型羽圃,這使得類型推斷變得棘手.
3.0: 使用composition api 后乾胶,沒有了this,取而代之的是plugins會使用provide 和inject 并且暴露出compostion function.

缺點

refs的開銷

  1. 使用composition api 后,我們需要不斷的去區(qū)分普通值和對象朽寞,這加大了我們的心理負擔识窿。
    但是我們可以通過引用的命名(如xxxRef)來減少負擔。另一方面脑融,由于在代碼組織方面提高了靈活性喻频,組件邏輯被拆分成更小的function,使得本地上下文更簡單并且引用的開銷更容易管理。

2.由于獲取值需要通過.value的方式肘迎,所以比起使用普通值甥温,使用和操作refs將會變得更加冗長。

Ref vs Reactive

簡單來說妓布,ref使基本數(shù)據(jù)類型保持響應式姻蚓,而reactive只能使引用類型()保持響應式,并且解構后失去響應O徽印U病!在返回reactive objects的時候可以使用toRefs將對象上的每個屬性轉成相應的ref!

return語句的細粒度

1.IDE插件根據(jù)setup()中申明的變量自動生成return語句
2.Babel插件自動生成和插入return語句

更多的靈活性需要更多的約束

他們相信:
1.提高上限的收益大于降低下限的損失;
2.通過良好的文檔和社區(qū)的指導圆兵,我們可以高效的解決代碼組織問題跺讯;

3.0采用的策略

1.目前提供了@vue/composition庫,提供給開發(fā)者體驗新的api并收集反饋殉农。
2.計劃將api內(nèi)置在3.0中刀脏,與2.0api共存。
3.對于想要使用新api的用戶來說超凳,提供了一個編譯時標志位來移除2.0的option api 以減小庫的體積愈污。然而,這完全是可選的轮傍。
4.新api被定位為高級功能暂雹,旨在解決大型應用中的問題。我們不會用新的文檔來覆蓋當前的默認文檔创夜,取而代之的是杭跪,它會有一個專屬的章節(jié)。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末驰吓,一起剝皮案震驚了整個濱河市涧尿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌檬贰,老刑警劉巖姑廉,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異翁涤,居然都是意外死亡桥言,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門葵礼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來号阿,“玉大人,你說我怎么就攤上這事鸳粉【胛鳎” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵赁严,是天一觀的道長扰柠。 經(jīng)常有香客問我,道長疼约,這世上最難降的妖魔是什么卤档? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮程剥,結果婚禮上劝枣,老公的妹妹穿的比我還像新娘汤踏。我一直安慰自己,他們只是感情好舔腾,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布溪胶。 她就那樣靜靜地躺著,像睡著了一般稳诚。 火紅的嫁衣襯著肌膚如雪哗脖。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天扳还,我揣著相機與錄音才避,去河邊找鬼。 笑死氨距,一個胖子當著我的面吹牛桑逝,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播俏让,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼楞遏,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了首昔?” 一聲冷哼從身側響起寡喝,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎沙廉,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體臼节,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡撬陵,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了网缝。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片巨税。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖粉臊,靈堂內(nèi)的尸體忽然破棺而出草添,到底是詐尸還是另有隱情,我是刑警寧澤扼仲,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布远寸,位于F島的核電站,受9級特大地震影響屠凶,放射性物質發(fā)生泄漏驰后。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一矗愧、第九天 我趴在偏房一處隱蔽的房頂上張望灶芝。 院中可真熱鬧,春花似錦、人聲如沸夜涕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽女器。三九已至酸役,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間晓避,已是汗流浹背簇捍。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留俏拱,地道東北人暑塑。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像锅必,于是被迫代替她去往敵國和親事格。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容