Vue-router官网

安装

vue-router是一个插件包,所以我们还是需要用npm 来进行安装。打开命令行工具,进入你的项目目录,输入下面命令。

npm install vue-router --save

如果在一个模块化工程中使用它。必须通过Vue.use()明确地安装路由功能

注意:先引入vue,再引入vue-router

import Vue from 'vue'
import VueRouter from 'vue-router' //显示声明使用VueRouter
Vue.use(VueRouter);

起步

  1. 创建一个vue-cli程序 参考链接

  2. 安装 参考安装标题

  3. 新建组件src/components/Content.vue和Main.vue

Content.vue

<template>
<h1>内容</h1>
</template> <script>
export default {
name: "Content"
}
</script> <style scoped> </style>

Main.vue

<template>
<h1>主页</h1>
</template> <script>
export default {
name: "Main"
}
</script> <style scoped> </style>
  1. 在src下新建一个文件router/index.js,进行创建路由和路由映射

默认情况下,我们进入一个网站的首页,应该先把首页渲染。所以可以设置默认路径

import Vue from 'vue'
import VueRouter from 'vue-router'
//导入上面自定义的组件
import Content from "../components/Content";
import Main from "../components/Main";
//安装路由
Vue.use(VueRouter); //配置导出路由
export default new VueRouter({
routes:[
{
path: '/',
redirect: '/main'
},
{
//路由路径
path:'/content',
//跳转的组件
component:Content
},
{
//路由路径
path:'/main',
//跳转的组件
component:Main
},
]
});
  1. 在main.js中挂载路由
import Vue from 'vue'
import App from './App.vue'
import router from "./router"
Vue.config.productionTip = false new Vue({
render: h => h(App),
router
}).$mount('#app')
  1. 在App.vue中使用路由
<template>
<div id="app">
<img src="./assets/logo.png">
<HelloWorld/>
<router-link to="/main">首页</router-link>
<router-link to="/content">内容</router-link>
<router-view></router-view>
</div>
</template>
....
  1. 实现效果

我们会发现URL中存在#,那怎么消除呢?

localhost:8081/#/content

使用HTML5的history模式

默认情况下,路径的改变使用的是URL的hash,如果我们希望使用H5的History模式,可以进行如下配置mode: 'history'

import Vue from 'vue'
import VueRouter from 'vue-router'
//导入上面自定义的组件
import Content from "../components/Content";
import Main from "../components/Main";
//安装路由
Vue.use(VueRouter); //配置导出路由
export default new VueRouter({
routes:[
{
path: '/',
redirect: '/main'
},
{
//路由路径
path:'/content',
//跳转的组件
component:Content
},
{
//路由路径
path:'/main',
//跳转的组件
component:Main
},
],
mode: 'history'
});

编程式导航

我们使用router-link的to属性,可以直接跳转路由。但是有时候,我们需要执行一段js代码之后,再跳转路由,这时候可以使用编程式导航。

语法:

This.$router.push(‘路由url’)

<button @click="toHome">首页</button>
methods: {
toHome() {
console.log('我将要跳转到首页')
this.$router.push('/home')
}
}

嵌套路由

比如在home页中,我们希望通过/home/news这种形式访问一些组件,在home页的基础上,进行组件展示,这时候可以使用嵌套路由。

实现嵌套路由有两个步骤。

  1. 创建对应的子组件,并且在路由配置中配置子路由。

  2. 在组件内部使用<router-view>组件

const routes = [
{
path: '/',
redirect: '/home'
},
{
path: '/home',
component: Home,
children: [ // 配置子路由
//默认路径news
{
path: '',
redirect:'news'
},
{
path: 'news',
component: () => import('../components/news')
},
{
path: 'message',
component: () => import('../components/message')
}
]
},
{
path: '/about',
component: () => import('../components/about')
}

路由传参

路由跳转可进行参数传递,参数传递分为两种:paramsquery

  • params的类型:

配置路由格式:/news/:id

这样就表示,我们在使用news的时候,需要在后面携带id参数。传递参数后的url:/news/123

  • query类型

配置路由方式不变。在路由后面使用?key=value传递

router-link传参

```vue

新闻2

```

JS代码传参

 toNews() {
this.$router.push({
path: '/home/news',
query: {name: '李四', age: 24}
})
}

获取参数

获取参数通过$route对象获取的。

created() {
console.log(this.$route.params)
console.log(this.$route.query)
}

router和route

$route$router是有区别的

$router是VueRouter实例,想要导航到不同的URL,使用$router.push方法。

$route是当前router的跳转对象,可以获取name、path等等

【vue-07】vue-router的更多相关文章

  1. 【前端面试】Vue面试题总结(持续更新中)

    Vue面试题总结(持续更新中) 题目参考链接 https://blog.csdn.net/weixin_45257157/article/details/106215158 由于已经有很多前辈深造VU ...

  2. 【非专业前端】Vue UI 之 建立Vuetify工程

    先建立一个工程[Webpack] .. ..建立好之后,进入目录,添加vuetify插件 cd vuetify-demo vue add vuetify[会出错] npm install vuetif ...

  3. 【转存】Vue组件选项props

    原帖地址 前面的话 组件接受的选项大部分与Vue实例一样,而选项props是组件中非常重要的一个选项.在 Vue 中,父子组件的关系可以总结为 props down, events up.父组件通过  ...

  4. 【vue开发】vue导出Excel表格教程&demo

    前端工作量最多的就是需求,需求就是一直在变,比如当前端数据写完之后,需要用Excel把数据下载出来:再比如前端在没有数据库想写些demo玩时,也是很好的选择. 第一步安装依赖包,修改配置 1.装依赖: ...

  5. 【Vue课堂】Vue.js 父子组件之间通信的十种方式

    这篇文章介绍了Vue.js 父子组件之间通信的十种方式,不管是初学者还是已经在用 Vue 的开发者都会有所收获.无可否认,现在无论大厂还是小厂都已经用上了 Vue.js 框架,简单易上手不说,教程详尽 ...

  6. 8.【nuxt起步】-vue组件之间数据交互

    那么现在问题来了,我现在是在index.vue获取了服务端的数据,怎么传值到maincontent.vue?当然你也可以把获取数据放在maincontent.vue,但假如有些数据同时在header, ...

  7. 【15.07%】【codeforces 625A】Guest From the Past

    time limit per test 1 second memory limit per test 256 megabytes input standard input output standar ...

  8. 【42.07%】【codeforces 558A】Lala Land and Apple Trees

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...

  9. 【17.07%】【codeforces 583D】Once Again...

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...

  10. 【07】 vue 之 Vue-router

    注意: vue-router@2.x 只适用于 Vue 2.x 版本. vue-router@1.x 对应于Vue1.x版本. 的Github地址:vue-router 文档地址 7.2. vue-r ...

随机推荐

  1. FreeBSD 虚拟网卡 网桥 路由 映射

    网关与路由 netstat -r Routing tables #路由表 Destination Gateway Flags Refs Use Netif Expire 目的地 网关 状态 接口 超时 ...

  2. FreeBSD WIFI 配置

    ee /boot/ loader.conf ee是个编辑器 中写入 rtwn_usb_load="YES" legal.realtek.license_ack=1 在 /etc/ ...

  3. 微信小程序 | app.json配置属性

    app.json 文件用来对微信小程序进行全局配置,决定页面文件的路径.窗口表现.设置网络超时时间.设置多 tab 等. widows: 用于设置小程序的状态栏.导航条.标题.窗口背景色. navig ...

  4. C# 8.0 宝藏好物 Async streams

    之前写<.NET gRPC 核心功能初体验>,利用gRPC双向流做了一个打乒乓的Demo,存储消息的对象是IAsyncEnumerable<T>,这个异步可枚举泛型接口支撑了g ...

  5. python中zip函数的使用

    zip(*iterables) zip可以将多个可迭代对象组合成一个迭代器对象,通过迭代取值,可以得到n个长度为m的元组.其中n为长度最短可迭代对象的元素个数,m为可迭代对象的个数.并且每个元组的第i ...

  6. 使用 Android Studio 开发 widget 安卓桌面插件

    •What AppWidget 即桌面小部件,也叫桌面控件,就是能直接显示在Android系统桌面上的小程序: 这么说可能有点抽象,看图: 像这种,桌面上的天气.时钟.搜索框等等,都属于 APP Wi ...

  7. Android控件 之 TextClock & AnalogClock(模拟时钟)

    TextClock •简介 关于时间的文本显示,Android 提供了 DigitalClock 和 TextClock. DigitalClock是Android第1版本发布,功能很简单,只显示时间 ...

  8. Java 读取Word文本/段落格式属性

    本文介绍通过Java后端程序代码来读取Word文本和段落格式的方法. 本次测试环境如下: Word版本:2013 编译环境:IntelliJ IDEA2018 Work库:free spire.doc ...

  9. PAT (Basic Level) Practice (中文)1055 集体照 (25 分) 凌宸1642

    PAT (Basic Level) Practice (中文)1055 集体照 (25 分) 凌宸1642 题目描述: 拍集体照时队形很重要,这里对给定的 N 个人 K 排的队形设计排队规则如下: 每 ...

  10. Asp.Net Core 5 REST API 使用 JWT 身份验证 - Step by Step

    翻译自 Mohamad Lawand 2021年1月22日的文章 <Asp Net Core 5 Rest API Authentication with JWT Step by Step> ...