關(guān)于路由vue-router的vuejs面試題有哪些

這篇文章主要介紹了關(guān)于路由vue-router的vuejs面試題有哪些,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

崇明網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián)公司,崇明網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為崇明近千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的崇明做網(wǎng)站的公司定做!

路由 vue-router 面試題

1. mvvm框架是什么?

mvvm即Model-View-ViewModel,mvvm的設(shè)計(jì)原理是基于mvc的

MVVM是Model-View-ViewModel的縮寫(xiě),Model代表數(shù)據(jù)模型負(fù)責(zé)業(yè)務(wù)邏輯和數(shù)據(jù)封裝,View代表UI組件負(fù)責(zé)界面和顯示,ViewModel監(jiān)聽(tīng)模型數(shù)據(jù)的改變和控制視圖行為,處理用戶交互,簡(jiǎn)單來(lái)說(shuō)就是通過(guò)雙向數(shù)據(jù)綁定把View層和Model層連接起來(lái)。在MVVM架構(gòu)下,View和Model沒(méi)有直接聯(lián)系,而是通過(guò)ViewModel進(jìn)行交互,我們只關(guān)注業(yè)務(wù)邏輯,不需要手動(dòng)操作DOM,不需要關(guān)注View和Model的同步工作

2. vue-router是什么?有哪些組件?
  • Vue Router 是 Vue.js 官方的路由管理器。它和 Vue.js 的核心深度集成,讓構(gòu)建單頁(yè)面應(yīng)用變得易如反掌。

  • <router-link><router-view><keep-alive>

3. active-class 是哪個(gè)組件的屬性?

active-class是router-link終端屬性,用來(lái)做選中樣式的切換,當(dāng)router-link標(biāo)簽被點(diǎn)擊時(shí)將會(huì)應(yīng)用這個(gè)樣式

4. 怎么定義vue-router的動(dòng)態(tài)路由?怎么獲取傳過(guò)來(lái)的值?
  • 動(dòng)態(tài)路由的創(chuàng)建,主要是使用path屬性過(guò)程中,使用動(dòng)態(tài)路徑參數(shù),以冒號(hào)開(kāi)頭,如下:

{
  path: '/details/:id'
  name: 'Details'
  components: Details
}

訪問(wèn)details目錄下的所有文件,如果details/a,details/b等,都會(huì)映射到Details組件上。

  • 當(dāng)匹配到/details下的路由時(shí),參數(shù)值會(huì)被設(shè)置到this.$route.params下,所以通過(guò)這個(gè)屬性可以獲取動(dòng)態(tài)參數(shù)

console.log(this.$route.params.id)
5. vue-router有哪幾種導(dǎo)航鉤子?
  • 全局前置守衛(wèi)

const router = new VueRouter({})
router.beforeEach((to, from, next) = {
  // to do somethings
})
  • to:Route,代表要進(jìn)入的目標(biāo),它是一個(gè)路由對(duì)象。

  • from:Route,代表當(dāng)前正要離開(kāi)的路由,也是一個(gè)路由對(duì)象

  • next:Function,必須需要調(diào)用的方法,具體的執(zhí)行效果則依賴next方法調(diào)用的參數(shù)

    • next():進(jìn)入管道中的下一個(gè)鉤子,如果全部的鉤子執(zhí)行完了,則導(dǎo)航的狀態(tài)就是comfirmed(確認(rèn)的)

    • next(false):終端當(dāng)前的導(dǎo)航。如瀏覽器URL改變,那么URL會(huì)充值到from路由對(duì)應(yīng)的地址。

    • next(’/’)||next({path:’/’}):跳轉(zhuǎn)到一個(gè)不同的地址。當(dāng)前導(dǎo)航終端,執(zhí)行新的導(dǎo)航。

* next 方法必須調(diào)用,否則鉤子函數(shù)無(wú)法resolved
  • 全局后置鉤子

router.afterEach((to, from) = {
 // to do somethings
})
  • 后置鉤子并沒(méi)有next函數(shù),也不會(huì)改變導(dǎo)航本身。

  • 路由獨(dú)享鉤子

    • beforEnter

const router = new VueRouter({
  routes: [
    {
      path: '/home',
      component: Home,
      beforeEnter: (to, from, next) = {
        // to do somethings
        // 參數(shù)與全局守衛(wèi)參數(shù)一樣
    	}
    }
  ]
})
  • 組件內(nèi)導(dǎo)航鉤子

const Home = {
  template: `<div</div`,
  beforeRouteEnter(to, from, next){
    // 在渲染該組件的對(duì)應(yīng)路由被 confirm 前調(diào)用
    // 不能獲取組件實(shí)例 ‘this’,因?yàn)楫?dāng)守衛(wèi)執(zhí)行前,組件實(shí)例還沒(méi)被創(chuàng)建
  },
  beforeRouteUpdate(to, from, next){
    // 在當(dāng)前路由改變,但是該組件被復(fù)用時(shí)調(diào)用
    // 例:對(duì)于一個(gè)動(dòng)態(tài)參數(shù)的路徑 /home/:id,在/home/1 和 /home/2 之間跳轉(zhuǎn)的時(shí)候
    // 由于會(huì)渲染同樣的 Home 組件,因此組件實(shí)例會(huì)被復(fù)用,而這個(gè)鉤子就會(huì)在這個(gè)情況下被調(diào)用。
    // 可以訪問(wèn)組件實(shí)例 'this'
  },
  beforeRouteLeave(to, from, next){
    // 導(dǎo)航離開(kāi)該組件的對(duì)應(yīng)路由時(shí)調(diào)用
    // 可以訪問(wèn)組件實(shí)例 'this'
  }
}
  • beforeRouterEnter不能訪問(wèn)this,因?yàn)槭匦l(wèi)在導(dǎo)航確認(rèn)前被調(diào)用,因此新組建還沒(méi)有被創(chuàng)建,可以通過(guò)傳一個(gè)回調(diào)給 next 來(lái)訪問(wèn)組件實(shí)例。在導(dǎo)航被確認(rèn)的時(shí)候執(zhí)行回調(diào),并把實(shí)例作為回調(diào)的方法參數(shù)。

const Home = {
  template: `<div</div`,
  beforeRouteEnter(to, from, next){
    next( vm = {
      // 通過(guò) 'vm' 訪問(wèn)組件實(shí)例
    })
  }
}
6. $route和 $router的區(qū)別是什么?
  • router為VueRouter的實(shí)例,是一個(gè)全局路由對(duì)象,包含了路由跳轉(zhuǎn)的方法、鉤子函數(shù)等。

  • route 是路由信息對(duì)象||跳轉(zhuǎn)的路由對(duì)象,每一個(gè)路由都會(huì)有一個(gè)route對(duì)象,是一個(gè)局部對(duì)象,包含path,params,hash,query,fullPath,matched,name等路由信息參數(shù)。

7. vue-router響應(yīng)路由參數(shù)的變化
  • 用watch 檢測(cè)

// 監(jiān)聽(tīng)當(dāng)前路由發(fā)生變化的時(shí)候執(zhí)行
watch: {
  $route(to, from){
    console.log(to.path)
    // 對(duì)路由變化做出響應(yīng)
  }
}
  • 組件內(nèi)導(dǎo)航鉤子函數(shù)

beforeRouteUpdate(to, from, next){
  // to do somethings
}
8. vue-router 傳參
  • Params

    • 只能使用name,不能使用path

    • 參數(shù)不會(huì)顯示在路徑上

    • 瀏覽器強(qiáng)制刷新參數(shù)會(huì)被清空,

  // 傳遞參數(shù)
  this.$router.push({
    name: Home,
    params: {
    	number: 1 ,
    	code: '999'
  	}
  })
  // 接收參數(shù)
  const p = this.$route.params
  • Query:

    • 參數(shù)會(huì)顯示在路徑上,刷新不會(huì)被清空

    • name 可以使用path路徑

// 傳遞參數(shù)
this.$router.push({
  name: Home,
  query: {
  number: 1 ,
  code: '999'
}
                  })
// 接收參數(shù)
const q = this.$route.query
9. vue-router的兩種模式
  • hash

    • 原理是onhashchage事件,可以在window對(duì)象上監(jiān)聽(tīng)這個(gè)事件

window.onhashchange = function(event){
  console.log(event.oldURL, event.newURL)
  let hash = location.hash.slice(1)
}
  • history

    • 利用了HTML5 History Interface 中新增的pushState()和replaceState()方法。

    • 需要后臺(tái)配置支持。如果刷新時(shí),服務(wù)器沒(méi)有響應(yīng)響應(yīng)的資源,會(huì)刷出404,

10. vue-router實(shí)現(xiàn)路由懶加載(動(dòng)態(tài)加載路由)
  • 把不同路由對(duì)應(yīng)的組件分割成不同的代碼塊,然后當(dāng)路由被訪問(wèn)時(shí)才加載對(duì)應(yīng)的組件即為路由的懶加載,可以加快項(xiàng)目的加載速度,提高效率

const router = new VueRouter({
  routes: [
    {
      path: '/home',
      name: 'Home',
      component:() = import('../views/home')
		}
  ]
})

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“關(guān)于路由vue-router的vuejs面試題有哪些”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!

本文題目:關(guān)于路由vue-router的vuejs面試題有哪些
文章URL:http://www.muchs.cn/article40/ijcjeo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、小程序開(kāi)發(fā)、網(wǎng)站策劃、Google、建站公司、App設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

微信小程序開(kāi)發(fā)