Vue3的Compositon API相對于Vue2的Options API有什么好處?

眾所周知,Vue3中引入了一種新的語法來書寫代碼,那就是Compositon API(組合式API)

那么vue3為什么要添加組合式API,它可以解決哪些問題?

在 Vue2中,隨著功能的增加,組件越來越復(fù)雜,維護(hù)起來也越來越難。而難以維護(hù)的根本原因是 Vue2 的Options API設(shè)計(jì)迫使開發(fā)者使用監(jiān)視、計(jì)算、方法來組織代碼,而不是實(shí)際的業(yè)務(wù)邏輯。使用傳統(tǒng)Options API中,新增或者修改一個(gè)需求,就需要分別在data,methods,computed,watch里修改 ,你要去找這個(gè)data在哪個(gè)對應(yīng)的methods中被修改過,如果業(yè)務(wù)邏輯復(fù)雜你還需要通過搜索屬性名稱的方式來尋找,這很明顯不是一種好的開發(fā)方式。

另外 Vue2 缺乏一個(gè)簡單而低成本的機(jī)制來完成邏輯重用,雖然你可以 minxis 完全重用邏輯,但是當(dāng) mixin 更多的時(shí)候,就使得很難找到相應(yīng)的數(shù)據(jù),計(jì)算出來也許是從中 mixin 的方法,使得類型推斷變得困難。

因此Compositon API,主要是解決Options API帶來的問題。

首先是代碼組織。組合API開發(fā)者可以根據(jù)業(yè)務(wù)邏輯組織自己的代碼,把相關(guān)的數(shù)據(jù)、處理邏輯放到一起,這就是一種關(guān)注點(diǎn)的聚合,讓代碼更具可讀性和可擴(kuò)展性。也就是說,當(dāng)下一個(gè)開發(fā)者接觸到這段不是自己寫的代碼, 他可以更好地利用代碼的組織來反轉(zhuǎn)實(shí)際的業(yè)務(wù)邏輯,或者根據(jù)業(yè)務(wù)邏輯更好地理解代碼。

二是實(shí)現(xiàn)代碼的邏輯提取和重用。當(dāng)我需要把某個(gè)功能添加到另一個(gè)項(xiàng)目時(shí),我可以很方便地找到這個(gè)功能所有的相關(guān)代碼并復(fù)用。當(dāng)然mixin邏輯提取和重用也可以實(shí)現(xiàn),但就像我之前說的,多個(gè)mixin在作用于同一個(gè)組件時(shí),很難看出mixin的屬性,來源不明確,另外,多個(gè)mixin的屬性存在變量命名沖突的風(fēng)險(xiǎn)。而 Composition API 恰恰解決了這兩個(gè)問題。

通過幾個(gè)圖片可以很直觀的感受到這兩種語法思想上的區(qū)別和Compositon API帶來的好處

vue2的方式:

業(yè)務(wù)相關(guān)代碼被分割了
隨著業(yè)務(wù)復(fù)雜度提升,業(yè)務(wù)代碼關(guān)聯(lián)性變得越來越差

vue3的方式:

將同一個(gè)功能的相關(guān)代碼組合到一起
按功能來劃分為一個(gè)個(gè)模塊,易于維護(hù)和復(fù)用

可以看出,Compositon API帶來了閱讀和維護(hù)方面的巨大進(jìn)步



參考文章:https://blog.csdn.net/qq_22182989/article/details/125781704

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容