三道题就能考察你对Vue掌握了多少!
2020年能過的只有下半年
因為…
疫情結束的時候已經是三月了
找到工作的時候已經是四月了
拿到工資的時候已經是五月了
什么鬼都還沒干,一年就已經去了一半
下面是今天的前端知識
1.談一下你對MVVM原理的理解?
傳統的MVC指的是用戶操作會請求服務端的路由,路由會調用對應的控制器來處理,控制器會操作數據庫獲取數據,將結果返回給前端,頁面再重新渲染,MVC是針對于整個架構來說,數據是單項的。
由于前端應用的復雜,對前端又進行了細分抽離了MVVM。
MVVM:傳統的前端會將數據手動的渲染到頁面上,MVVM模式不再需要用戶手動的操作DOM元素,將數據綁定到ViewModel層上,會自動將數據渲染到頁面中,視圖變化也會通知ViewModel更新數據。ViewModel 就是MVVM模式中的橋梁,這是一個雙向綁定的過程,比如v-model就實現了雙向綁定。
2.請說一下響應式數據的原理?
核心點就是?Object.definePeoperty?實現的,但是答到這些是遠遠不夠的,太簡單了,可以談談Vue初始化的過程,默認Vue在初始化數據的時候,會給data中定義的屬性使用?Object.definePeoperty?重新定義所有屬性,當頁面取到對應屬性時,會添加一些自己的邏輯,那就是進行依賴收集(收集當前組件中watcher),如果屬性發生變化會通知相關的依賴進行更新操作。
Vue在取值的過程中把渲染的過程保存起來了,當值重新更改的時候,重新觸發之前的渲染過程,頁面就更新過來了。
在源碼中初始化的時候會調用?initData?方法,拿到用戶的數據,對用戶的數據進行觀測,new Observer?創建一個觀測類,觀測我們的數據,如果我們的數據是對象的話,會調用?this.walk(value)?內部會把我們的數據進行遍歷,使用defineReactive?方法通過?Object.definePeoperty?定義。
3.Vue中是如何檢測數組變化?
使用函數劫持的方式重寫了數組的方法,Vue將data中的數組進行了原型鏈重寫,指向自己定義的數組原型方法,這樣當調用數組API時,可以通知依賴更新,如果數字中包含引用類型,會對數組中的引用類型在進行監控,比如數組中如果有對象,對象是通過之前的?Object.definePeoperty?重新定義。
了解更多原理可以參考之前寫的一篇文章:分分鐘寫出Vue原理
總結
以上是生活随笔為你收集整理的三道题就能考察你对Vue掌握了多少!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 漂亮有创意的思维导图,流程图模板分享
- 下一篇: 花呗分期付款是怎么分期 花呗分期付款是怎