1. 程式人生 > 其它 >Vue面試題01

Vue面試題01

說出vue常用的指令:

v-text, v-html, v-bind, v-for, v-if, v-else, v-else-if, v-show, v-on,

談談你對MVC的理解:

MVC是軟體開發中常見的開發模式,主要應用於後端,將程式劃分為M模型、V檢視、C控制器從而便於團隊協作開發,減少程式碼冗餘

談你對MVVM理解:

Model層代表資料模型、
View層代表UI元件、ViewModel是Model、View層的橋樑,資料會繫結到ViewModel並監控模型資料變化自動更新同步到頁面,檢視變化會通知ViewModel層更新資料。

談談MVVM和MVC區別:

相同點:都是軟體開發常見的開發模式或者開發思想

不同點:

1- MVC後端居多,MVVM前端
2- MVC單向通訊 目的將M和V程式碼分離,MVVM則是雙向通訊,不需要手動操作DOM

說一下v-show、v-if的區別:

都可以控制元素隱藏顯示,v-if語法更強、控制DOM、v-show控制CSS

高頻切換例如二維碼、登入彈框、提示框、刪除提示框、tab選項卡,推薦使用v-show 來減少DOM頻繁刪除建立所產生的額外效能開銷

判斷迴圈v-if、v-for優先順序:

在 vue 2中,在一個元素上同時使用 v-ifv-for 時,v-for的優先順序高於v-if   缺點:會產生不必要的效能開銷

而在 vue 3 中, v-if的優先順序高於v-for            vue3 解決了這個問題,v-if判斷為false 後,不會執行v-for

說一下v-model原理:

v-model其底層是基於【:value】和【@input】 封裝的語法糖

VUE2響應式原理(中級):

Vue初始化資料時,底層會通過Object.defineProperty對data中的模型資料進行資料劫持,資料變化會通知進行更新操作。

VUE2響應式原理(高階):

底層通過Object.defineProperty進行資料劫持結合 釋出訂閱模式 通知檢視更新。

VUE2響應式資料無法劫持原因、和解決方案:

Object.defineProperty 不支援 複雜資料型別 劫持

物件遞迴 、陣列重寫 、額外api ($forceUpdate() 、$set)

$forceUpdate 原理:

呼叫 notify() 強制檢視更新

$set 原理:

defineReactive(this.data資料, 要劫持得陣列索引或物件鍵, 預設值) 建立響應式依賴 指定資料更新

VUE3響應式原理:

proxy 建構函式結合 Reflect 內建物件 攔截

-Object.defineProperty 攔截的是物件的屬性,會改變原物件。 proxy 是攔截整個物件,通過 new 生成一個新物件,不會改變原物件。
- proxy 語法更強,攔截方式除了上面的 get 和 set ,還有 11 種,以前就6個
- proxy 特性更強,可以監聽未定義的,針對於N層則get時判斷遞迴新增proxy攔截即可