前端路由

136 阅读1分钟

vue路由基本使用

1.安装 npm i vue-router@版本号

2.创建路由文件 router/index.js

在这个文件里配置路由

//配置路由,一段固定的代码
// 导入路由插件
import VueRouter from 'vue-router'
import Vue from 'vue'
// 使用插件 - 重要
Vue.use(VueRouter)
// 导入组件
import MyMovie from './MyMovie.vue'
// 创建路由规则
const router = new VueRouter({
  routes: [
    {
      path: "/",  //进行 /路径时自动跳转到home地址
      redirect: "/home" // 重定向
    },
    
    {
      path: "/page1", // 当浏览器访问 http://localhost:8080/#/page1时,
      component: MyMovie  // 装入组件MyMovie
      
          //配置二级路由
           children: [ //路由嵌套
          {
           path: "",   //path为空,展示/page时,展示这个组件page组件+SportIndex组件
           component: SportIndex
         },
          {
           path: '/china',    //path以/开头,表示/china时,展示这个组件
           component: China
         },
          {
           path: 'use',  //path不以/开头,表示访问地址要加上,上级路由的地址 // localhost:3000/#/sport/usa
           component: use
         }
       ]
    },
    
    { // 放在最下面,当上面路由都不匹配时, 就会匹配这个通配符, 显示NotFound页面
    path: "*",
    component: NotFound
    }
  ]
})
//导出
export default router

3.使用路由

import router from './router/index.js' //路由文件

new Vue({
  router: router, // 使用路由
  render: h => h(App),
}).$mount('#app'

使用路由

//根据地址不同,自动装入在router/index.js中配置的文件 
<router-view/> //要在使用的页面写上这个标签

链接导航-router-link

作用: 用于提供路由链接,实现页面跳转

格式: <router-link to="/home">首页</router-link>

是vue提供的组件,带有高亮功能,相当于是<a>链接,最终也会渲染成a链接。

<router-link to="xxx">首页</router-link> 
//一定要配合to实现切换路由,to的路径名要写的和路由文件中的path属性中的路径名一样

如果当前路由被激活会在渲染出的a标签里添加特殊的类名:router-link-exact-active router-link-active

页面跳转传参

1.query传参。 适用场景:页面搜索

//传
<router-link to="/goods?name=外套&price=168">外套</router-link> 
// 接收:
{{$route.query}}

2.params传参。 适用场景:详情页

<router-link to="/goods/123">详情</router-link>  
//接收:
{{$route.params}}

编程式导航

写代码的方式,来让页面跳转

// 跳转页面不传参
this.$router.push('/路由路径')
this.$router.push({path: '路由路径'})
this.$router.push({name: '路由名称'})

// 跳转并query传参-方式1
this.$router.push("/路由路径?参数1=值1&参数2=值2")
// 跳转并query传参-方式2
this.$router.push({
    path: "路由路径",
    query: {
        "参数1":值1,
        "参数2":值2
    }
})

// 跳转并params传参-方式1
this.$router.push("/路由路径/值1/值2")
// 跳转并params传参-方式2
this.$router.push({
    name: "路由名称",
    params: {
        "参数1":值1,
        "参数2":值2
    }
})

// 后退
$router.back()

// this.$route: 保存当前的路由信息。用做获取传递的参数
// this.$router: 路由对象。router/index.js 中导出的对象,提供各种路由相关的API,例如页面跳转