【vuejs面試題】務必熟知的vuejs面試題「務必收藏」


如果能幫到你,點個贊吧,務必熟知的vuejs面試題「務必收藏」

vuejs 基礎必備

1、active-class 是哪個組件的屬性?嵌套路由怎么定義

  (1)、active-class 是 vue-router 模塊的 router-link 組件的屬性
  (2)、使用 children 定義嵌套路由

2、怎么定義 vue-router 的動態路由? 怎么獲取傳過來的值

  在 router 目錄下的 index.js 文件中,對 path 屬性加上 /:id。

  使用 router 對象的 params.id 獲取

3、vue-router 有哪幾種導航鈎子?

  三種,

  (1)、全局導航鈎子

    router.beforeEach(to, from, next),

    router.beforeResolve(to, from, next),

    router.afterEach(to, from ,next)

  (2)、組件內鈎子
    
    beforeRouteEnter, beforeRouteUpdate, beforeRouteLeave

  (3)、單獨路由獨享組件

    beforeEnter

4、v-model 是什么?怎么使用? vue中標簽怎么綁定事件

  v-model 可以實現雙向綁定,

  綁定事件:<input @click="rdhub.cn" />

5、axios 是什么?怎么使用?描述使用它實現登錄功能的流程

  axios 是請求后台資源的模塊。 npm i axios -S

  如果發送的是跨域請求,需在配置文件中 config/index.js 進行配置

6、vuex 是什么?怎么使用?哪種功能場景使用它

  vuex 是專門為 vue 開發的數據狀態管理模式。組件之間數據狀態共享

  使用場景:音樂播放、登錄狀態、購物車


// 新建 store.js
import vue from 'vue'
import vuex form 'vuex'
vue.use(vuex)
export default new vuex.store({
    //...rdhub.cn
})
 
//main.js
import store from './store'
...

7、mvvm 框架是什么?它和其他框架(jquery) 的區別是什么?哪些場景適合

  mvvm 是 model + view + viewmodel 框架,通過 viewmodel 連接數據模型model 和 view

  區別:vue 是數據驅動,通過數據來顯示視圖層而不是節點操用

  場景:數據操作比較多的場景,更加快捷

8、自定義指令(v-check, v-focus) 的方法有哪些? 它有哪些鈎子函數? 還有哪些鈎子函數參數

  全局定義指令:在 vue 對象的 directive 方法里面有兩個參數, 一個是指令名稱, 另一個是函數。

  組件內定義指令:directives

  鈎子函數: bind(綁定事件出發)、inserted(節點插入時候觸發)、update(組件內相關更新)

  鈎子函數參數: el、binding

9、說出至少 4 種 vue 當中的指令和它的用法

  v-if(判斷是否隱藏)、v-for(把數據遍歷出來)、v-bind(綁定屬性)、v-model(實現雙向綁定)

10、vue-router 是什么?它有哪些組件

  vue-router 是 vue 的路由插件,

  組件:router-link router-view

11、vue 的雙向綁定的原理是什么

  vue.js 是采用數據劫持結合發布者-訂閱者模式的方式,通過Object.defineProperty()來劫持各個屬性的setter,getter,在數據變動時發布消息給訂閱者,觸發相應的監聽回調。

  具體步驟:

  第一步:需要 observe 的數據對象進行遞歸遍歷,包括子屬性對象的屬性,都加上 setter 和 getter
這樣的話,給這個對象的某個值賦值,就會觸發setter,那么就能監聽到了數據變化

  第二步:compile解析模板指令,將模板中的變量替換成數據,然后初始化渲染頁面視圖,並將每個指令對應的節點綁定更新函數,添加監聽數據的訂閱者,一旦數據有變動,收到通知,更新視圖

  第三步:Watcher訂閱者是Observer和Compile之間通信的橋梁,主要做的事情是:

  1、在自身實例化時往屬性訂閱器(dep)里面添加自己

  2、自身必須有一個update()方法

  3、待屬性變動dep.notice()通知時,能調用自身的 update() 方法,並觸發Compile中綁定的回調,則功成身退。

  第四步:MVVM作為數據綁定的入口,整合Observer、Compile和Watcher三者,通過Observer來監聽自己的model數據變化,通過Compile來解析編譯模板指令,最終利用Watcher搭起Observer和Compile之間的通信橋梁,達到數據變化 -> 視圖更新;視圖交互變化(input) -> 數據model變更的雙向綁定效果。

12、請詳細說下你對vue生命周期的理解

  總共分為8個階段創建前/后,載入前/后,更新前/后,銷毀前/后。

  創建前/后

  在beforeCreated階段,vue實例的掛載元素$el和數據對象data都為undefined,還未初始化。

  在created階段,vue實例的數據對象data有了,$el還沒有。

  載入前/后

  在beforeMount階段,vue實例的$el和data都初始化了,但還是掛載之前為虛擬的dom節點,data.message還未替換。

  在mounted階段,vue實例掛載完成,data.message成功渲染。

  更新前/后

  當data變化時,會觸發beforeUpdate和updated方法。

  銷毀前/后

  在執行destroy方法后,對data的改變不會再觸發周期函數,說明此時vue實例已經解除了事件監聽以及和dom的綁定,但是dom結構依然存在

vuex 面試題

1、有哪幾種屬性

  有 5 種,分別是 state、getter、mutation、action、module

2、vuex 的 store 特性是什么

  (1) vuex 就是一個倉庫,倉庫里放了很多對象。其中 state 就是數據源存放地,對應於一般 vue 對象里面的 data

  (2) state 里面存放的數據是響應式的,vue 組件從 store 讀取數據,若是 store 中的數據發生改變,依賴這相數據的組件也會發生更新

  (3) 它通過 mapState 把全局的 state 和 getters 映射到當前組件的 computed 計算屬性

3、 vuex 的 getter 特性是什么

  (1) getter 可以對 state 進行計算操作,它就是 store 的計算屬性

  (2) 雖然在組件內也可以做計算屬性,但是 getters 可以在多給件之間復用

  (3) 如果一個狀態只在一個組件內使用,是可以不用 getters

4、vuex 的 mutation 特性是什么

  action 類似於 muation, 不同在於:action 提交的是 mutation,而不是直接變更狀態

  action 可以包含任意異步操作

5、vue 中 ajax 請求代碼應該寫在組件的methods中還是vuex 的action中

  如果請求來的數據不是要被其他組件公用,僅僅在請求的組件內使用,就不需要放入 vuex 的 state 里

  如果被其他地方復用,請將請求放入 action 里,方便復用,並包裝成 promise 返回

5、不用 vuex 會帶來什么問題

  可維護性會下降,你要修改數據,你得維護3個地方

  可讀性下降,因為一個組件里的數據,你根本就看不出來是從哪里來的

  增加耦合,大量的上傳派發,會讓耦合性大大的增加,本來Vue用Component就是為了減少耦合,現在這么用,和組件化的初衷相背

生命周期面試題

1、什么是 vue 生命周期

  vue 實例從創建到銷毀的過程就是生命周期。

  也就是從開始創建、初始化數據、編譯模板、掛在 dom -> 渲染、更新 -> 渲染、寫在等一系列過程

2、vue生命周期的作用是什么

  生命周期中有多個事件鈎子,讓我們在控制整個 vue 實例的過程時更容易形成好的邏輯

3、vue生命周期總共有幾個階段

  8個階段:創建前/后、載入前/后、更新前/后、銷毀前/后

4、第一次頁面加載會觸發哪幾個鈎子

  第一次加載會觸發 beforeCreate、created、beforeMount、mounted

5、DOM 渲染在哪個周期中就已經完成

  mounted

6、簡述每個周期具體適合哪些場景

  生命周期鈎子的一些使用方法:

  beforecreate : 可以在這加個loading事件,在加載實例時觸發

  created : 初始化完成時的事件寫在這里,如在這結束loading事件,異步請求也適宜在這里調用

  mounted : 掛載元素,獲取到DOM節點 updated : 如果對數據統一處理,在這里寫上相應函數

  beforeDestroy : 可以做一個確認停止事件的確認框 nextTick : 更新數據后立即操作dom
![image.png | left | 300x390]

關於

![在這里插入圖片描述](https://img-blog.csdnimg.cn/20181216153752412.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDA5MjExMw==,size_16,color_FFFFFF,t_70)

來源:https://segmentfault.com/a/1190000016770732


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM