Vue-router
Vue-router的跳轉原理:
vue-router實現單頁面路由跳轉,提供了三種方式: hash方式、history模式、abstract模式,根據mode參數來決定采用哪一種方式
● hash: 使用 URL hash 值來作路由。默認模式。
● history: 依賴 HTML5 History API 和服務器配置。查看 HTML5 History 模式。
● abstract: 支持所有 JavaScript 運行環境,如 Node.js 服務器端
路由之間的跳轉:
聲明式(標簽跳轉):<router-view>標簽用於展示路由組件,DOM節點中使用v-link進行跳轉,或使用router-link標簽
編程式(js跳轉)
怎么定義vue-router的動態路由以及如何獲取傳過來的動態參數?
在router目錄下的index.js文件中,對path屬性加上/:id
使用router對象的params id
Vue中,如何用watch去監聽router變化
當路由發生變化的時候,在watch中寫具體的業務邏輯
let vm = new Vue({
el:"#app",
data:{},
router,
watch:{
$router(to,from){
console.log(to.path);
}
}
})
vue-router有哪幾種導航鈎子?以及它的參數?
三種,一是全局導航鈎子:router.beforeEach(to,from,next),作用:跳轉前進行判斷攔截。
第二種:組件內的鈎子
第三種:單獨路由獨享組件
beforeRouteEnter、afterEnter、beforeRouterUpdate、beforeRouteLeave
參數:有to(去的那個路由)、from(離開的路由)、next(一定要用這個函數才能去到下一個路由,如果不用就攔截)最常用就這幾種
Vue的路由實現: hash模式和history模式(Vue的兩種狀態)
- hash——即地址欄URL的#符號,特點: 通過window.onhashchange的監聽, 匹配不同的url路徑,進行解析,加載不同的組件,然后動態的渲染出區域內的html內容,不會被包含在HTTP請求中,對后端完全沒有影響
HashHistory有兩個方法:
HashHistory.push()是將路由添加到瀏覽器訪問歷史的棧頂
hashHistory.replace( ) 是替換掉當前棧頂的路由
因為hash發生變化的url都會被瀏覽器歷史訪問棧記錄下來,這樣一來,盡管瀏覽器沒有請求服務器,但是頁面狀態和url一一關聯起來的,瀏覽器還是可以進行前進后退的
- history —— 利用了HTML5 History Interface中新增的pushState()和replaceState()方法。這兩個方式應用於瀏覽器的歷史記錄棧,提供了對歷史記錄的修改功能。history模式不怕頁面的前進和后腿,就怕刷新,當刷新時,如果服務器沒有相應的響應或者資源,就會刷出404,而hash模式不會
- $route從當前router跳轉對象里面可以獲取name、path、query、params等(<router-link>傳的參數有this.$route.query或者this.$route.params接收)
- $router為VueRouter實例。想要導航到不同URL,則使用$router.push方式,返回上一個history也是使用$router.go/$router.back方法