hash: 使用 URL hash 值來做路由。支持全部瀏覽器,包括不支持 HTML5 History Api 的瀏覽器。 /#homejavascript
history: 依賴 HTML5 History API 和服務器配置。【須要後端支持】 /homehtml
yarn add vue-router -S
引入第三方的依賴包, 並註冊路由
```javascript
import Vue from 'vue'
import VueRouter from 'vue-router'vue
javascript const routes = [ { path: '/home', component: Home }//每個對象就是一個路由 ] const router = new VueRouter({ routes//路由表 必寫的 })
export default router
javascript import router from './router/index.js' new Vue({ router, render: (h) => App }).$mount('#app')
<router-view />
javascript const routes = [ { //咱們要求這個路由的配置要放在路由表的最上方 path: '/', redirect: '/home' } ]
javascript const routes = [ { path: '/', redirect: '/home' //重定向 }, { path: '/home', component: Home }, { path: '/list', component: List }, { path: '/detail', component: Detail }, { path: '/login', component: Login }, { path: '/register', component: Register }, { path: '/user', component: User }, { path: '/shopcar', component: Shopcar }, { path: '/error', component: Error }, { //這個就是錯誤路由匹配, vue規定這個必須放在最下面,它必須將上面的路由全找一遍,找不到才用當前這個 path: '**', redirect: '/error' } ]
vue路由模式的肯定 mode
1. 若是你使用的是 hash , 那麼a標籤就能夠了、
2. 若是你使用 history , 那麼咱們最好將a標籤改爲 router-link 這個組件
- router-link 這個組件 身上必需要有一個 to 屬性
- router-link 這個組件身上加一個 keep-alive屬性能夠進行瀏覽器緩存java
javascript const routes = [ { path: '/shopcar', component: Shopcar, children: [ { path: 'yyb', //不寫 / component: Yyb } ] } ]
命名路由android
做用: 就是簡寫路徑了vue-router
{ path: '/shopcar', component: Shopcar, //子路由 children: [ { path: 'yyb', // 容易犯錯點 /yyb X component: Yyb, name: 'yyb' //命名路由 }, { path: 'junge', component: Junge } ] },
使用:編程
<router-link :to = "{name:'yyb'}"/>
// vue.config.js中能夠默認直接使用 http-proxy-middleware module.exports = { devServer: { proxy: { '/douban': { // /douban 是一個標記 target: 'http://api.douban.com', // 目標源 changeOrigin: true, // 修改源 pathRewrite: { '^/douban': '' } }, '/siku': { target: 'https://android.secoo.com', changeOrigin: true, pathRewrite: { '^/siku': '' } } } } }
<router-link :to = "{name: 'list',params: {id: xxx}, query: {xxx:xxx}}"></router-link>
id: this.$route.params.id query: this.$route.query.xxx
this.$router.push('/home')
router.beforeEach(fn)
next(vm => { //vm指的就是組件 const result = JSON.parse(res.data.slice(7,-1)).rp_result.categorys vm.$set(vm.category,'categorys',result) })
this
router.beforeEach((to,from,next)=>{ const name = localStorage.getItem('name') if( name || to.path === '/login' ){ //若是有 / --> /home next() }else{ next('/login') } })
業務: 當進入mine頁面的時候, 要判斷用戶是否登陸,若是沒有登陸,跳轉登陸頁後端
路由懶加載api