vue-router
新增文件夹router,创建index.js
import Vue from 'vue' // 引入vue import Router from 'vue-router' // 引入vue-router // 页面引入 import Home from '../pages/Home' import Discover from '../pages/Discover' import Setting from '../pages/Setting' Vue.use(Router) // 使用vue-router // 路由配置表 const routes = [ // 一个对象,就是一个路由的配置项 { // 命名路由,名字需要唯一 name: 'home' path: '/home', // 路由跳转的地址 component: Home, // 跳转地址后显示的组件 // 配置子路由 children: [ { path: 'detail', // 子路由不能设置/ component: Detail } ] }, { path: '/discover', component: Discover }, { path: '/setting', component: Setting }, // 路由配置的路由表,是从上 往下加载,如果 匹配到了就直接使用,不再向下执行 { // 重定向首页(匹配其他所有的地址跳转到home页面) path: '*', redirect: '/home' } ] // 创建路由对象 const router = new Router({ routes }) // 导出路由对象 export default router
main.js中使用导出的router
import Vue from 'vue' import App from './App.vue' import router from './router' // 引入路由对象 Vue.config.productionTip = false new Vue({ render: h => h(App), // 通过混入的方式挂载到该实例的所有实例和组件上 router // Vue实例配置该router配置项,整个vue实例都可以通过this.$router访问该路由对象 该路由可以管理这个实例 }).$mount('#app')
App.vue中使用配置好的路由(router-link标签跳转路由)
<template> <div id="app"> <h1>app</h1> <!-- 路由跳转后组件会显示再 router-view标签内 --> <router-view></router-view> <!-- <nav> <a href="#/home">首页</a> <a href="#/discover">发现</a> <a href="#/setting">设置</a> </nav> --> <nav> <!-- 标签切换路由 --> <!-- to 路由跳转的地址 tag 需要显示的标签是什么默认为a标签 点击的标签会添加router-link-active类名 --> <router-link to="/home" tag="li">首页</router-link> <router-link to="/discover">发现</router-link> <router-link to="/setting">设置</router-link> </nav> </div> </template> <script> export default { // 路由(vue-rotuer):统一管理页面切换 } </script> // scoped style标签内的样式只作用再该组件内 <style scoped> .router-link-active { color: red; } </style>
js跳转路由
<div @click="handleClick">首页</div> methods: { handleClick(){ // 操作路由对象 js操作路由 this.$router.push('/home') // 将页面加入history中可以点击浏览器的后退按钮回到前一个页面 this.$router.back() // 操作路由对象返回上一个页面 this.$router.replace('/home') // 跳转页面,不加入history中,无法通过浏览器的后退按钮回退到前一个页面 this.$router.forward() // 前进,回到前一个退出的页面 this.$router.go(num) // 正数前进,负数后退 } }
使用router-link标签切换导航叫做声明式导航
使用js中的$router切换导航叫做编程式导航
命名路由的跳转(命名唯一)
<router-link :to="{name:'home',params:{id:''},query:{}}" tag="li">设置</router-link> // name 配置跳转路由的名字 // params 配置后面需要的动态路由 // query配置路由后的请求字段