1、Vue 3與Vue 2相比有哪些主要改進?
- 優(yōu)化指令系統(tǒng):如v-model的改進,使其能夠支持多個模型。
- 性能優(yōu)化:使用Proxy代替Object.defineProperty,提升響應式性能。
- Compositon API:引入新的組合API,使邏輯復用更加靈活。
- 更好的TypeScript支持:默認使用TS進行開發(fā)和維護。
- 底層架構重構:使用更現(xiàn)代的JavaScript特性(如ES6)。
2、Vue 3中的響應式原理是?
- Vue 3使用Proxy對象來攔截對象屬性的讀寫操作,包括屬性的添加、刪除和修改。
- 利用Reflect對象來操作源對象,以保持其行為的完整性。
- reactive函數(shù)用于創(chuàng)建響應對象,包括對象和數(shù)組。
3、Vue 3的Compositon API與Options API的區(qū)別?
- Composition API是Vue 3中新增加的特性,它允許你使用函數(shù)來組織和復用代碼邏輯,而不是依賴組件選項(如data、methods等)。
- Options API是Vue 2中的傳統(tǒng)API,通過組件選項來組織代碼,如data、methods、computed等。
- Composition API更加靈活,允許跨組件邏輯復用,減少代碼重復。
4、Vue 3中如何創(chuàng)建響應式數(shù)據(jù)?
- 在Vue 3中,你可以使用reactive函數(shù)來創(chuàng)建響應式對象。
- 對于數(shù)組,Vue 3仍然使用ref函數(shù)來創(chuàng)建響應式數(shù)組。
- 使用computed函數(shù)來創(chuàng)建計算屬性,它會自動跟蹤其依賴的響應式數(shù)據(jù)變化。
5、Vue 3中的ref和reactive有什么區(qū)別?
- ref用于創(chuàng)建基本類型數(shù)據(jù)的響應式引用,如字符串、數(shù)字等。
- reactive用于創(chuàng)建對象或數(shù)組的響應式代理,它可以代理對象的所有屬性,包括嵌套對象。
6、Vue 3中如何檢測數(shù)組的變化?
- Vue 3使用Proxy來攔截數(shù)組方法(如push、pop等),從而能夠檢測到數(shù)組的變化并觸發(fā)視圖更新。
- 與Vue 2相比,Vue 3不再需要重寫數(shù)組方法來實現(xiàn)響應式。
7、請解釋一下Vue 3中的toRefs和toRaw函數(shù)的作用?
- toRefs函數(shù)用于將響應式對象中的屬性轉換為單獨的ref對象,這樣可以更靈活地訪問和修改這些屬性。
- toRaw函數(shù)用于獲取響應式對象的原始值,即去除其代理層,返回原始的非響應式對象。
8、Vue 3中如何實現(xiàn)組件之間的通信?
- 父組件向子組件通信:通過props屬性向子組件傳遞數(shù)據(jù)。
- 子組件向父組件通信:通過事件向父組件發(fā)送消息。
- 非父子組件通信:可以使用Vuex進行狀態(tài)管理,或者使用事件總線(EventBus)進行通信。