vue面試題
1.vue.js的兩個核心是什么?
資料驅動和組件系統:
資料驅動:ViewModel,保證資料和視圖的一致性,
組件系統:應用類UI可以看作全部是由組件樹構成的,
2.雙向資料系結的原理?
vue實作資料雙向系結主要是:采用資料劫持結合發布者-訂閱者模式的方式,通過
Object.defineProperty()
來劫持各個屬性的setter,getter,在資料變動時發布訊息給訂閱者,觸發相應監聽回呼,
3. v-if和v-show有什么區別?
v-show 僅僅控制元素的顯示方式,將display屬性在block和none來回切換;而v-if會控制這個Dom節點的存在與否,
當我們需要經常切換某個元素的顯示/隱藏時,使用v-show會更加節省性能上的開銷;當只需要一次顯示或隱 藏時,使用v-if更加合理,
4. methods,computed和watch的區別?
methods:重要重新渲染,method呼叫總會執行該函式,
computed:相當于一個具備快取的watcher,計算屬性是根據它的相關依賴進行快取,只有它的相關依賴發生改變,它才會重新求值,
Watch:沒有快取性,更多的是觀察的作用,可以監聽某些資料執行回呼,
當我們需要深度監聽是需要用:deep:true
初始化監聽:immediate:true
5. 說?下你對單向資料流的理解?
單向資料流主要是vue 組件間傳遞資料是單向的,即資料總是由父組件傳遞給子組件,子組件在其內部維護自己的資料,但它無權修改父組件傳遞給它的資料,當開發者嘗試這樣做的時 候,vue 將會報錯,這樣做是為了組件間更好的維護,在開發中可能有多個子組件依賴于父組件的某個資料,假如子組件可以修改父組件資料的話,一個子組件變化會引發所有依賴這個資料的子組件發生變化,所以 vue 不推薦子組件修改父組件的 資料,
6.data為什么是一個函式?
避免組件中的資料互相影響,同一個組件被復用多次后會創建多個實體,如果data是一個物件的話,這些實體用的都是同一個建構式,這樣就會影響到所有的實體,所以為了保證組件不同的實體之間data不沖突,data必須是一個函式,
7. vue中 keep-alive 組件的作用
作用:
用于保留組件狀態或避免重新渲染(快取的作用)
比如:
當一個目錄頁面與一個詳情頁面,用戶經常:打開目錄頁面=>進入詳情頁面=>回傳目錄頁面=>打 開詳情頁面,這樣目錄頁面就是一個使用頻率很高的頁面,那么就可以對目錄組件使用<keep-alive></keep-alive>進行快取,這樣用戶每次回傳目錄時,都能從快取中快速渲染,而不用重新渲染,
1、屬性:
include:字串或正則運算式,只有匹配的組件會被快取,
exclude:字串或正則運算式,任何匹配的組件都不會被快取,
2、兩個生命周期:
activated和deactivated
用來得知當前組件是否處于活躍狀態
3、用法:
包裹動態組件時,會快取不活動的組件實體,?不是銷毀它們,和<transition>相似,<keep- alive>是?個抽象組件:它?身不會渲染?DOM 元素,也不會出現在?組件鏈中,當組件在
<keep-alive>內被切換,在 2.2.0 及其更?版本中,activated 和 deactivated? 命周期 將會在 樹內的所有嵌套組件中觸發,
8.ref的作用?
- 獲取dom元素:
this.$ref.box- 獲取子組件中的this:
this.$refs.box.msg- 呼叫子組件中的方法:
this.$refs.box.open()
9.params和query的區別?
- 引入方式不同: query要使用path來引入,params要使用name來引入,接受引數格式類似,參考分別是
this.$route.query.name和this.$route.params.name- 形成的路徑不同(或者url地址顯示不同): 使用query傳參的話,會在瀏覽器的url欄看到傳的引數類似于get請求,使用params傳參的話則不會,類似于post請求,
params傳遞后形成的路徑:/router/123,/router/zhangsanquery傳遞后形成的路徑:
/router?id=666&name=zhangsan- 是否受動態路徑引數影響 Query傳遞的引數不會受路徑引數的影響,會全部展示到路徑上,重繪不會丟失query里面的資料; params傳遞的引數會受路徑引數的影響,只會展示含有動態路徑引數的部分,重繪會丟失沒有設定動態路徑引數的params的資料,
10.談談你對MVVM開發模式的理解?
MVVM分為Model、View、Viewmodel三者,
Model:代表資料模型,資料和業務邏輯都在Model層中定義;
View:代表UI視圖,負責資料的展開;
ViewModel:負責監聽Model中資料的改變并且控制視圖的更新,處理用戶互動操作;
總結: Model和View并無直接關聯,而且通過Viewmodel來進行聯系的,Model和Viewmodel之間有著雙向資料系結的聯系,因此當Model中的資料改變時會觸發View層的重繪,View中由于用戶互動操作而改變的資料也會在Model中同步,這種模式實作了Model和View的資料自動同步,因此開發者只需要專注對資料的維護操作即可,而不需要自己操作dom,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/302525.html
標籤:其他
上一篇:JavaScript-簡易計算器
