vue路由

1. 安装vue-router

npm i vue-router -s

2.设置vue-router

首先在vue中src文件夹下的sec下创建一个router文件夹下创建一个index.js文件

// src/router/index.js就是当前项目的路由模块
// 1 导入Vue 和VueRouter的包
import Vue from 'vue'
import VueRouter from 'vue-router'
// 2 调用vue.use()函数,把VueRouter安装为vue插件
Vue.use(VueRouter)
// 3 创建路由的实例对象
const routes = [
  //路由规则
  {
    path: '/',
    component: () => import('../views/Manage.vue'),
    redirect: "/home",//重定向,将/重定向到/home// 路由重定向:强制跳转
    children: [// /组件里的嵌套路由
      { path: 'user', name: '用户管理', component: () => import('../views/User.vue')},
      { path: 'home', name: '首页', component: () => import('../views/Home.vue')},
      { path: 'person', name: '个人信息', component: () => import('../views/Person.vue')}
    ]
  },
  {//登录的路由
    path: '/login',
    name: 'login',
    component: () => import('../views/Login.vue')
  },
  {//登录的路由
    path: '/register',
    name: 'register',
    component: () => import('../views/Register.vue')
  },
  {
    path: '/about',
    name: 'about',
    // route level code-splitting
    // this generates a separate chunk (about.[hash].js) for this route
    // which is lazy-loaded when the route is visited.
    component: () => import(/* webpackChunkName: "about" */ '../views/AboutView.vue')
  }
]
// 定义数组routes[],对应哈希地址与组件之间的关系
const router = new VueRouter({
  mode: 'history',
  base: process.env.BASE_URL,
  routes
})
// 4 向外共享路由的实例对象
export default router
index.js

或者:

// src/router/index.js就是当前项目的路由模块
// 1 导入Vue 和VueRouter的包
import Vue from 'vue'
import VueRouter from 'vue-router'
// 导入路由要用到的组件
import Home from '../components/Home.vue'
import Movie from '../components/Movie.vue'
import About from '../components/About.vue'
 
// 2 调用vue.use()函数,把VueRouter安装为vue插件
Vue.use(VueRouter)

// 3 创建路由的实例对象
const router = new VueRouter({
  // 定义数组routes[],对应哈希地址与组件之间的关系
  routes: [
  //路由规则
    { path: '/home', component: Home },
    { path: '/movie', component: Movie },
   {
      path: '/about',
      component: About,
      // about组件里的嵌套路由
      children: [
        { path: 'tab1', component: Tab1 },
        { path: 'tab2', component: Tab2 }
      ]
    },
    // 路由重定向:强制跳转
    { path: '/', redirect: '/home' }
  ]
})

// 4 向外共享路由的实例对象
export default router
index.js

然后在main.js中加入

// 1 导入路由模块,拿到路由实例
import router from '../src/router/index.js'

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

3.应用

首先知道<router-view/>或者是<router-view></router-view>,这个是一个路由容器,vue项目最核心的App.vue文件中即是通过router-view进行路由管理。

然后这个是一级路由

<template>
  <div id="app">
    <router-view/>
  </div>
</template>

比如说这个项目中的/login和/register,/about都是一级路由

 

 

 这个一级路由的跳转是:

this.$router.push("要跳转的路径")

比如说这个@click="$router.push('/register')是要跳转到注册中去

然后上面的http://localhost:8080/默认加载的是Manage.vue中的东西

 

 

 

4.子路由

咱们看卡Manage.vue中的东西

 

这个中间这部分就是二级路由,就是类似这个样子

 

又或者说类似与微信上的这个样子

这个的代码是这样的:

{
    path: "/routerViewPractice",
    name: "routerViewPractice",
    component: () => import("@/views/routerView/index.vue"),
    redirect: '/messagePage',//页面默认加载的路由
    children: [
      {
        path: "/messagePage",
        name: "messagePage",
        component: () => import("@/views/routerView/childPages/messagePage.vue")
      },
      {
        path: "/contactPage",
        name: "contactPage",
        component: () => import("@/views/routerView/childPages/contactPage.vue")
      },
      {
        path: "/dynamicPage",
        name: "dynamicPage",
        component: () => import("@/views/routerView/childPages/dynamicPage.vue")
      }
    ]
  }
<template>
  <div>
    <title-bar :title="title" @goBack="goback"></title-bar>
    <router-view></router-view>
    <BottomBar
     @handleMsg='handleMsg'
     @lookContact='lookContact'
     @readDynamic='readDynamic'
    ></BottomBar>
  </div>
</template>
<script>
import TitleBar from "@/components/TitleBar";
import BottomBar from "@/components/BottomBar";
export default {
  name: "",
  components: {
    TitleBar,
    BottomBar
  },
  data() {
    return {
      title: "路由视图",
    };
  },
  methods: {
    // 返回方法
    goback() {
      // this.$emit("GoBack");
    },
    handleMsg() {
      this.$router.push({path: '/messagePage'})
    },
    lookContact() {
      this.$router.push({path: '/contactPage'})
    },
    readDynamic() {
      this.$router.push({path: '/dynamicPage'})
    }
  }
};
</script>
<style scoped>
#page-title {
  width: 100%;
  background-color: #fff;
  display: flex;
  justify-content: center;
}
.backImg {
  width: 20px;
}
</style>

 

又或者说是这个:这个nowPlaying和comingSoon都是films下的子路由

 

 

 在看一下这个:这个/center和/cinemas但是一级的路由

 

 

 然后看看这个后台管理系统的结构,大体是这样的:

 

 

 

 

 

 

 

 这个结构是这样的:然后这左边和头部都用的是组件,还用到了组件传值和调用组件中的方法,不会的可以看这个传送门

看这个中间部分用了一个<router-view/>这里面是二级路由要显示的东西

 

 这个是Aside:

 然后看看这个Heard

 

这个个人信息用的是el-card

这个用的是element组件

 

posted @ 2023-01-16 23:31  lipu123  阅读(68)  评论(0编辑  收藏  举报