Vue-Router

一、简介

Vue Router 是 Vue.js 官方的路由管理器。它和 Vue.js 的核心深度集成,让构建单页面应用变得易如反掌。
包含的功能有:

  1. 嵌套的路由/视图表
  2. 模块化的、基于组件的路由配置
  3. 路由参数、查询、通配符
  4. 基于 Vue.js 过渡系统的视图过渡效果
  5. 细粒度的导航控制
  6. 带有自动激活的 CSS class 的链接
  7. HTML5 历史模式或 hash 模式,在 IE9 中自动降级
  8. 自定义的滚动条行为
    实际上用的最多的还是视图的跳转和拦截方面的操作

注:以下的项目案例都是下一个根据上一个案例继续进行的

二、使用

项目初始化

  1. 使用下列命令初始化项目
vue init webpack 1_router_use

为了更好的学习,所以不直接安装组件依赖,一步一步来
在这里插入图片描述
2. 删除components文件夹下的HelloWord.vue文件,并且删除App.vue中的多余标签,只留下图片中的样子,方便我们做案例

<template>
  <div id="app">
      主页面
  </div>
</template>

<script>

export default {
  name: 'App'
}
</script>

<style>

</style>
  1. 下载vue-router组件
npm install vue-router
  1. 在src下创建一个router的文件夹

1、模版页面跳转

  1. 在components文件夹创建一个login.vue文件和list.vue
<template>
  <div id="login">
    登录界面
  </div>
</template>

<script>
  export default {
    name: 'login'
  }
</script>

<style>

</style>
<template>
  <div id="list">
    列表页面
  </div>
</template>

<script>

  export default {
    name: 'list'
  }
</script>

<style>

</style>
  1. 在router文件夹创建一个index.js,因为index命名的文件为默认文件,所以我们以它为router的配置文件
//配置Vue-Router
//1、导入相关模块组件和要使用到的component模块,一般默认开头大写为组件
import Vue from 'vue'
import VueRouter from 'vue-router'

import Login from '../components/login'
import List from '../components/list'

//2、安装路由
Vue.use(VueRouter);

//3、导出路由给其它文件使用
export default new VueRouter({
  routes:[
    {
      //路径
      path:'/login',
      //组件名称
      name:'loginView',
      //跳转去到的组件
      component:Login
    },
    {
      path:'/list',
      name:'listView',
      component:List
    }
  ]
})

  1. src/main.js添加刚刚写router/index.js模块依赖
import Vue from 'vue'
import App from './App'
//1、添加刚刚写router/index.js模块依赖
import Router from './router/index'

Vue.config.productionTip = false


new Vue({
  el: '#app',
  components: { App },
  template: '<App/>',
  router:Router//2、配置路由
})

  1. 在主页面添加<router-link></router-link><router-view></router-view>标签
<template>
  <div id="app">
      主页面
    <router-link to="/login">登录</router-link>
    <router-link to="/list">列表</router-link>
    <router-view></router-view>
  </div>
</template>

<script>

export default {
  name: 'App'
}
</script>

<style>

</style>

  1. 总结
    路由跳转有四步:
    (1、)写好componet页面
    (2、)配置只好路由的index.js配置文件
    (3、)在页面对应的js文件中导入路由,并且配置路由
    (4、)在vue页面天啊及<router-link></router-link><router-view></router-view>标签

2、路由嵌套

Vue的官方文档图片

  1. 在components文件夹创建一个userMessage.vue文件updateUserMessage.vue
<template>
  <div id="userMessage">
    个人用户信息展示页面
  </div>
</template>

<script>
  export default {
    name: 'userMessage'
  }
</script>

<style>

</style>

<template>
  <div id="updateUserMessage">
    个人用户信息更新页面
  </div>
</template>

<script>
  export default {
    name: 'updateUserMessage'
  }
</script>

<style>

</style>

  1. 修改router/index.js文件,添加嵌套路由
//配置Vue-Router
import Vue from 'vue'
import VueRouter from 'vue-router'

import Login from '../components/login'
import List from '../components/list'
import UpdateUserMessage from '../components/updateUserMessage'
import UserMessage from '../components/userMessage'


Vue.use(VueRouter);

export default new VueRouter({
  routes:[
    {
      path:'/login',
      name:'loginView',
      component:Login
    },
    {
      path:'/list',
      name:'listView',
      component:List,
      //添加嵌套组件
      children: [
        //格式和之前的一样
            {
              path: '/updateUserMessage',
              name: 'updateUserMessageView',
              component: UpdateUserMessage
            },
            {
              path: '/userMessage',
              name: 'userMessageView',
              component: UserMessage
            }
      ]
    }
  ]
})


  1. 给要嵌套的组件添加<router-view></router-view>标签
<template>
  <div id="list">
    列表页面
    <router-view></router-view>
  </div>
</template>

<script>
  export default {
    name: 'list'
  }
</script>

<style>

</style>

  1. 总结:
    (1、)写好对应的子页面
    (2、)给router/index.js中需要嵌套的路由添加children属性
    (3、)给要嵌套的页面添加上要<router-view></router-view>标签

3、参数传递(不使用props解耦)

  1. src/components下创建一个selectById.vue
<template>
  <div id="selectById">
  	非解耦范式获取
    这是id为
    {{$route.params.id}}
    的用户信息
  </div>
</template>

<script>
  export default {
    name: 'selectById'
  }
</script>

<style>

</style>

  1. 添加到router/index.js路由配置中
//配置Vue-Router
//1、导入相关模块组件和要使用到的component模块,一般默认开头大写为组件
import Vue from 'vue'
import VueRouter from 'vue-router'

import Login from '../components/login'
import List from '../components/list'
import UpdateUserMessage from '../components/updateUserMessage'
import UserMessage from '../components/userMessage'
import SelectById from '../components/selectById'

//2、安装路由
Vue.use(VueRouter);

//3、导出路由给其它文件使用
export default new VueRouter({
  routes:[
    {
      path:'/login',
      name:'loginView',
      component:Login
    },
    {
      path:'/list',
      name:'listView',
      component:List,
      //添加嵌套组件
      children: [
            {
              path: 'updateUserMessage',
              name: 'updateUserMessageView',
              component: UpdateUserMessage
            },
            {
              path: 'userMessage',
              name: 'userMessageView',
              component: UserMessage
            }
      ]
    },
    {
      //属性接收通过  :参数名
      path:'/selectById/:id',
      name:'selectByIdView',
      component:SelectById
    },

  ]
})

  1. App.vue中添加链接
<template>
  <div id="app">
      主页面
    <router-link to="/login">登录</router-link>
    <router-link to="/list">列表</router-link>
    <router-link to="/list/updateUserMessage">个人用户信息更新</router-link>
    <router-link to="/list/userMessage">个人用户信息展示页面</router-link>
	<!--name为我们在router/index.js配置的路由名-->
    <router-link :to="{name:'selectByIdView',params:{id:1}}">查询用户id为1的用户信息</router-link>
    <router-view></router-view>
  </div>
</template>

<script>

export default {
  name: 'App'
}
</script>

<style>

</style>

4、参数传递(使用props解耦)

  1. src/components下创建一个SelectByAgePropsView..vue
<template>
  <div id="selectByAgeProps">
    解耦方式
    这是age为
    {{age}}
    的用户信息
  </div>
</template>

<script>
  export default {
    props:['age'],
    name: 'selectByAgeProps'
  }
</script>

<style>

</style>


  1. 添加到router/index.js路由配置中
//配置Vue-Router
//1、导入相关模块组件和要使用到的component模块,一般默认开头大写为组件
import Vue from 'vue'
import VueRouter from 'vue-router'

import Login from '../components/login'
import List from '../components/list'
import UpdateUserMessage from '../components/updateUserMessage'
import UserMessage from '../components/userMessage'
import SelectById from '../components/selectById'
import SelectByAgeProps from '../components/selectByAgeProps'

//2、安装路由
Vue.use(VueRouter);

//3、导出路由给其它文件使用
export default new VueRouter({
  routes:[
    {
      path:'/login',
      name:'loginView',
      component:Login
    },
    {
      path:'/list',
      name:'listView',
      component:List,
      //添加嵌套组件
      children: [
            {
              path: 'updateUserMessage',
              name: 'updateUserMessageView',
              component: UpdateUserMessage
            },
            {
              path: 'userMessage',
              name: 'userMessageView',
              component: UserMessage
            }
      ]
    },
    {
      //属性接收通过  :参数名
      path:'/selectById/:id',
      name:'selectByIdView',
      component:SelectById
    },
    {
      path:'/selectByAgeProps/:age',
      name:'selectByAgePropsView',
      component:SelectByAgeProps,
      //props:true 解耦
      props:true
    },

  ]
})


  1. App.vue中添加链接
<template>
  <div id="app">
      主页面
    <router-link to="/login">登录</router-link>
    <router-link to="/list">列表</router-link>
    <router-link to="/list/updateUserMessage">个人用户信息更新</router-link>
    <router-link to="/list/userMessage">个人用户信息展示页面</router-link>

    <!--name为我们在router/index.js配置的路由名-->
    <router-link :to="{name:'selectByIdView',params:{id:1}}">查询用户id为1的用户信息</router-link>
    <router-link :to="{name:'selectByAgePropsView',params:{age:2}}">查询用户age为2的用户信息</router-link>
    <router-view></router-view>
  </div>
</template>

<script>

export default {
  name: 'App'
}
</script>

<style>

</style>

5、重定向

  1. router/index.js路由配置添加一个goHome的路由
//配置Vue-Router
//1、导入相关模块组件和要使用到的component模块,一般默认开头大写为组件
import Vue from 'vue'
import VueRouter from 'vue-router'

import Login from '../components/login'
import List from '../components/list'
import UpdateUserMessage from '../components/updateUserMessage'
import UserMessage from '../components/userMessage'
import SelectById from '../components/selectById'
import SelectByAgeProps from '../components/selectByAgeProps'

//2、安装路由
Vue.use(VueRouter);

//3、导出路由给其它文件使用
export default new VueRouter({
  routes:[
    {
      path:'/login',
      name:'loginView',
      component:Login
    },
    {
      path:'/list',
      name:'listView',
      component:List,
      //添加嵌套组件
      children: [
            {
              path: 'updateUserMessage',
              name: 'updateUserMessageView',
              component: UpdateUserMessage
            },
            {
              path: 'userMessage',
              name: 'userMessageView',
              component: UserMessage
            }
      ]
    },
    {
      //属性接收通过  :参数名
      path:'/selectById/:id',
      name:'selectByIdView',
      component:SelectById
    },
    {
      path:'/selectByAgeProps/:age',
      name:'selectByAgePropsView',
      component:SelectByAgeProps,
      //props:true 解耦
      props:true
    },
    {
      path:'/goHome',
      redirect:'/list'
    }

  ]
})



  1. App.vue中添加链接
<template>
  <div id="app">
      主页面
    <router-link to="/login">登录</router-link>
    <router-link to="/list">列表</router-link>
    <router-link to="/list/updateUserMessage">个人用户信息更新</router-link>
    <router-link to="/list/userMessage">个人用户信息展示页面</router-link>

    <!--name为我们在router/index.js配置的路由名-->
    <router-link :to="{name:'selectByIdView',params:{id:1}}">查询用户id为1的用户信息</router-link>
    <router-link :to="{name:'selectByAgePropsView',params:{age:2}}">查询用户age为2的用户信息</router-link>


    <router-link to="/goHome">重定向</router-link>
    <router-view></router-view>
  </div>
</template>

<script>

export default {
  name: 'App'
}
</script>

<style>

</style>

### Vue Router 安装 为了使用 Vue Router,在项目中需先完成其安装。推荐的方式是利用 npm 或 yarn 来添加依赖: ```bash npm install vue-router # 或者 yarn add vue-router ``` 这一步骤确保了开发环境中有最新版本的 Vue Router 可供调用[^3]。 ### 配置 Vue Router 配置 Vue Router 主要涉及创建路由实例并将其挂载到 Vue 应用上。下面是一个简单的例子来展示如何设置基本的路由功能: ```javascript // 创建 routes.js 文件定义路径映射关系 import { createRouter, createWebHistory } from 'vue-router' import Home from './views/Home.vue' import About from './views/About.vue' const routes = [ { path: '/', name: 'Home', component: Home, }, { path: '/about', name: 'About', component: About, } ] const router = createRouter({ history: createWebHistory(), routes // 缩写为 `routes: routes` }) export default router; ``` 这段代码展示了如何导入必要的模块,定义页面组件对应的路径以及初始化路由器对象[^1]。 ### 使用 Vue Router 一旦完成了上述两步操作之后就可以在应用入口文件 main.js 中引入刚刚创建好的路由实例,并传给 Vue 实例: ```javascript import { createApp } from 'vue'; import App from './App.vue'; import router from './router'; createApp(App).use(router).mount('#app'); ``` 这样就成功集成了 Vue Router 到应用程序当中去了。 对于更复杂的场景比如嵌套路由、导航守卫等功能,则可以参阅官方文档获取更多指导。 ### 示例 这里给出一个完整的简单案例用于理解整个流程: #### 1. 安装 VueVue Router 假设已经有一个基于 Vue CLI 初始化的新工程,执行如下命令即可获得所需库支持: ```bash npm install vue@next vue-router@next ``` #### 2. 设置路由表 编辑 src/router/index.js 添加如下内容: ```javascript import { createRouter, createWebHashHistory } from "vue-router"; import HelloWorld from "../components/HelloWorld"; const routes = [{ path: "/", component: HelloWorld }]; const router = createRouter({ history: createWebHashHistory(), routes, }); export default router; ``` #### 3. 修改主程序启动逻辑 最后调整 src/main.js 如下所示: ```javascript import { createApp } from "vue"; import App from "./App.vue"; import router from "./router"; createApp(App).use(router).mount("#app"); ``` 以上就是关于 Vue Router 的快速入门指南,涵盖了从零开始构建带有路由功能的应用所需的全部知识点。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值