眾所周知,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的方式:


vue3的方式:


可以看出,Compositon API帶來了閱讀和維護(hù)方面的巨大進(jìn)步
參考文章:https://blog.csdn.net/qq_22182989/article/details/125781704