一 .computed 和 watch 的區別和運用的場景?vue
computed: 計算屬性,依賴其餘屬性值,而且computed 的值有緩存,只有它依賴的值發生改變,下一次獲取它的值纔會從新計算。node
watch: 更多的是 觀察 的做用,相似數據的監聽回調,每次監聽的數據發生變化都會執行回調而後進行操做。vue-router
二. Vue 的父組件和子組件生命週期鉤子函數執行順序?瀏覽器
加載渲染過程緩存
父 beforeCreate -> 父 created -> 父 beforeMount -> 子 beforeCreate -> 子 created -> 子 beforeMount -> 子 mounted -> 父 mounted服務器
子組件更新過程函數
父 beforeUpdate -> 子 beforeUpdate -> 子 updated -> 父 updated性能
父組件更新過程優化
父 beforeUpdate -> 父 updatedurl
銷燬過程
父 beforeDestroy -> 子 beforeDestroy -> 子 destroyed -> 父 destroyed
三. 組件中 data 爲何是一個函數?
組件是用來複用的,js對象是引用類型,若是是組件的data是對象,那麼做用域就沒有隔離,自組件的data會相互影響,若是是函數,每一個實例能夠維護一份一份被返回的對象的獨立拷貝,組件之間不相互影響,而 new Vue 的實例不是複用,因此不存在引用對象的問題。
四. vue-router 中經常使用的 hash 和 history 路由模式實現原理嗎?
1. hash: location.hash 基於來實現
hash 路由模式的實現主要是基於下面幾個特性:
2. history : HTML5 提供的 History API 來實現的
history 路由模式的實現主要基於存在下面幾個特性:
五. 虛擬DOM的優缺點?
優勢:保證性能下限 無需手動操做DOM 跨平臺
缺點:沒法進行極致優化
六. Vue 中的 Key 有什麼做用?
key 是Vue 中 Vnode的惟一標示,經過這個 Key ,diff 的操做更加準確,快速。