千鋒教育web前端高頻面試題視頻教程,kerwin大話前端面試秘籍(附答案)

Vue部分面試題總結(jié)----->
1. Vue2的響應(yīng)式原理Object.defineProperty有什么缺點
- 無法監(jiān)聽ES6的Set, Map變化
- 無法監(jiān)聽Class類型的數(shù)據(jù)
- 屬性的新加或者刪除也無法監(jiān)聽
- 數(shù)組元素的增加和刪除也無法監(jiān)聽
2. MVC
用戶對View操作以后, View捕獲到這個操作, 會把處理的權(quán)利交移給Controller, Controller會對來自View數(shù)據(jù)進(jìn)行預(yù)處理,決定當(dāng)前調(diào)用哪個Model接口, 然后由Model執(zhí)行相關(guān)的邏輯業(yè)務(wù)邏輯(數(shù)據(jù)請求);
當(dāng)Model變更了以后, 會通過觀察者模式(Observer Pattern)通知View, View通過觀察者模式收到Model變更的消息以后, 會向Model請求最新的數(shù)據(jù), 然后重新更新界面
總結(jié): 把業(yè)務(wù)邏輯和展示邏輯分離,模塊化程度高,但由于View是強(qiáng)依賴特定的Model,所以View無法組件化,無法復(fù)用
3. MVP
和MVC模式一樣,用戶對View的操作都會從View移交給Presenter, Presenter會執(zhí)行相應(yīng)的應(yīng)用程序邏輯, 并且對Model進(jìn)行相應(yīng)的操作; 而這時候Model執(zhí)行完業(yè)務(wù)邏輯以后, 也是通過觀察者模式把自己變更的消息傳遞出去, 但是是傳遞給Presenter而不是View, Presenter獲取到Model變更的消息以后, 通過View提供的接口更新界面
總結(jié): View不依賴Model, View可以進(jìn)行組件化, 但Model → View的手動同步邏輯,非常麻煩,維護(hù)困難
4. MVVM
MVVM的調(diào)用關(guān)系和MVP一樣, 但是在ViewModel當(dāng)中會有一個叫Binder, 或是Data-binding engine的東西, 只需要在View的模版語法中, 指令式地聲明View上的顯示的內(nèi)容是和Model的那一塊數(shù)據(jù)綁定的; 當(dāng)ViewModel隊進(jìn)行Model更新的時候, Binder會自動把數(shù)據(jù)更新到View上去, 當(dāng)用戶對View進(jìn)行操作(如: 表單輸入), Binder也會自動把數(shù)據(jù)更新到Model上去, 這種方式稱為: Two-way data-binding, 雙向數(shù)據(jù)綁定; 可以簡單而不恰當(dāng)?shù)乩斫鉃橐粋€模版引擎, 但是會根據(jù)數(shù)據(jù)變更實時渲染
總結(jié): 解決了MVP大量的手動View和Model同步的問題, 提供雙向綁定機(jī)制, 提高了代碼的可維護(hù)性, 對于大型的圖形應(yīng)用程序, 視圖狀態(tài)較多, ViewModel的構(gòu)建和維護(hù)的成本都會比較高