關(guān)于Vue3.0的一些觀點(diǎn)與理解

1: 使用了 Vue3只损,是否都要遵循用 Composition API 的形式去寫頁面袜漩?
答案是否定的连锯。需要注意一點(diǎn):Vue3 并沒有廢棄 Options API,甚至還會(huì)全力支持兼容 Vue2 語法的工作。而 CompositionAPI 出現(xiàn)的背景主要是為了解決邏輯抽象和和復(fù)用的問題吮便,但不意味著它成為了 Vue3 的標(biāo)準(zhǔn)骆姐。如何區(qū)分場景使用Options API or Composition API主要看業(yè)務(wù)邏輯的復(fù)雜程序镜粤,例如一些簡單的 toast/button等基礎(chǔ)組件,用options API形式會(huì)更加清晰和簡潔玻褪。而相對復(fù)雜的業(yè)務(wù)邏輯肉渴,可以用Composition API,可以把單獨(dú)一塊邏輯抽離到一個(gè)模塊带射。

2: Vue3 中混用 Options API 和 Composition API 會(huì)不會(huì)對性能產(chǎn)生影響?
不會(huì)同规。其實(shí)從問題 1 就可以明顯地看出來并不會(huì)對性能產(chǎn)生任何影響。不應(yīng)該被option api限制思維,而更多關(guān)注邏輯內(nèi)聚問題

3: 關(guān)于 setup 中沒有 this 的問題
官方是這樣說的:在setup()內(nèi)部券勺,this 不會(huì)是該活躍實(shí)例的引用绪钥,因?yàn)?setup() 是在解析其它組件選項(xiàng)之前被調(diào)用的,所以setup()內(nèi)部的 this的行為與其它選項(xiàng)中的this 完全不同关炼。這在和其它選項(xiàng)式 API 一起使用setup() 時(shí)可能會(huì)導(dǎo)致混淆

我們可以理解為:this未指向當(dāng)前的組件實(shí)例程腹,在setup被調(diào)用之前,data儒拂,methods寸潦,computed等都沒有被解析,但是組件實(shí)例確實(shí)在執(zhí)行setup函數(shù)之前就已經(jīng)被創(chuàng)建好了

4: Vue3 響應(yīng)式比 Vue2 的性能要好嗎社痛?
vue3 出來的時(shí)候见转,往往聽到的一些答案都是說 Vue3 性能比 Vue2 性能好,但真的是嗎蒜哀?
首先從實(shí)現(xiàn)上來講:我們都知道 vue2 中的響應(yīng)式主要?dú)w功于Object.defineProperty, 它主要劫持對象的屬性斩箫,所以它不能觀測到對象屬性的添加和刪除,而在 vue 中撵儿,是用Proxy實(shí)現(xiàn)的乘客,劫持的是整個(gè)對象,能規(guī)避掉 vue2 留下的問題统倒,但也有明顯的缺點(diǎn)就是兼容性不夠強(qiáng)。但是對比 Vue2氛雪,你需要知道的是 vue3 性能上的優(yōu)勢主要還是體現(xiàn)在初始化階段房匆。因?yàn)?Vue2 中定位響應(yīng)式對象時(shí),會(huì)遞歸把子對象變成響應(yīng)式报亩。而 Vue3 其實(shí)是惰性執(zhí)行:在對象屬性被真正訪問的時(shí)候才會(huì)遞歸執(zhí)行子對象變成響應(yīng)式浴鸿。

5: Vue3與Vue2響應(yīng)式的區(qū)別

  • Vue2.x的響應(yīng)式實(shí)現(xiàn)原理:
    1、對象類型:通過Object.defineProperty()對屬性的讀取弦追、修改進(jìn)行攔截(數(shù)據(jù)劫持)
    2岳链、數(shù)組類型:通過重寫更新數(shù)組的一系列方法來實(shí)現(xiàn)攔截。(對數(shù)組的變更方法進(jìn)行了包裹)

  • vue2的缺點(diǎn):(僅僅是關(guān)于數(shù)據(jù)響應(yīng)造成的缺點(diǎn)哦>⒓)
    1掸哑、影響初始化速度、數(shù)據(jù)過大時(shí)的資源問題(對象的每一個(gè)屬性都要被攔截零远。所有的key都要有一次循環(huán)和遞歸)
    2苗分、數(shù)組的特殊處理,導(dǎo)致其修改數(shù)據(jù)不能使用索引(原因在于defineProperty不支持?jǐn)?shù)組)
    3牵辣、動(dòng)態(tài)添加或刪除對象屬性無法被偵測

vue也都提供了解決方案:$set$delete摔癣,需要理解的直接移步深入響應(yīng)式原理

  • vue3.x的響應(yīng)式實(shí)現(xiàn)原理:
    1、通過Proxy(代理): 攔截對象中任意屬性的變化, 包括:屬性值的讀寫择浊、屬性的添加戴卜、屬性的刪除
    2、Proxy可以理解成琢岩,在目標(biāo)對象之前架設(shè)一層“攔截”投剥,外界對該對象的訪問,都必須先通過這層攔截粘捎,因此提供了一種機(jī)制薇缅,可以對外界的訪問進(jìn)行過濾和改寫。

更多內(nèi)容可以參考 ES6 Proxy

6: Vue3對比Vue2的優(yōu)勢及新特性原理

  1. Vue3.x性能比Vue2.x快
    diff方法優(yōu)化:
    vue2中的虛擬dom是全量的對比(每個(gè)節(jié)點(diǎn)不論寫死的還是動(dòng)態(tài)的都會(huì)比較)
    vue3新增了靜態(tài)標(biāo)記(patchflag)與上次虛擬節(jié)點(diǎn)對比時(shí)攒磨,只對比帶有patch flag的節(jié)點(diǎn)(動(dòng)態(tài)數(shù)據(jù)所在的節(jié)點(diǎn))泳桦;可通過flag信息得知當(dāng)前節(jié)點(diǎn)要對比的具體內(nèi)容
    靜態(tài)提升:
    vue2無論元素是否參與更新,每次都會(huì)重新創(chuàng)建然后再渲染
    vue3對于不參與更新的元素娩缰,會(huì)做靜態(tài)提升灸撰,只會(huì)被創(chuàng)建一次,在渲染時(shí)直接復(fù)用即可
    時(shí)間偵聽器緩存:
    默認(rèn)情況下onClick會(huì)被視為動(dòng)態(tài)綁定拼坎,所以每次都會(huì)追蹤它的變化
    但是因?yàn)槭峭粋€(gè)函數(shù)浮毯,所以不用追蹤變化,直接緩存起來復(fù)用即可
  2. 按需編譯泰鸡,體積比vue2.x更小
  3. 組合API(類似react hooks
  4. 更好的Ts支持
  5. 暴露了自定義渲染API
  6. 更先進(jìn)的組件
  7. template模板可以有多個(gè)根元素
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末债蓝,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子盛龄,更是在濱河造成了極大的恐慌饰迹,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件余舶,死亡現(xiàn)場離奇詭異啊鸭,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)匿值,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門赠制,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人挟憔,你說我怎么就攤上這事钟些。” “怎么了绊谭?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵厘唾,是天一觀的道長。 經(jīng)常有香客問我龙誊,道長抚垃,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮鹤树,結(jié)果婚禮上铣焊,老公的妹妹穿的比我還像新娘。我一直安慰自己罕伯,他們只是感情好曲伊,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著追他,像睡著了一般坟募。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上邑狸,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天懈糯,我揣著相機(jī)與錄音,去河邊找鬼单雾。 笑死赚哗,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的硅堆。 我是一名探鬼主播屿储,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼渐逃!你這毒婦竟也來了够掠?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤茄菊,失蹤者是張志新(化名)和其女友劉穎疯潭,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體买羞,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡袁勺,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年雹食,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了畜普。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,690評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡群叶,死狀恐怖吃挑,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情街立,我是刑警寧澤舶衬,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站赎离,受9級(jí)特大地震影響逛犹,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一虽画、第九天 我趴在偏房一處隱蔽的房頂上張望舞蔽。 院中可真熱鬧,春花似錦码撰、人聲如沸渗柿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽朵栖。三九已至,卻和暖如春柴梆,著一層夾襖步出監(jiān)牢的瞬間陨溅,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工轩性, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留声登,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓揣苏,卻偏偏與公主長得像悯嗓,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子卸察,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評論 2 353

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