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')
}

路由传参

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

  • 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 12.2 vmware 虚拟机镜像 bt 种子

    安装了 KDE5 火狐浏览器 Fcitx 输入法 并进行了中文设置 替换软件源为国内可用. VirtualBox虚拟机也可以用  magnet:?xt=urn:btih:E88885631B57426 ...

  2. python tempfile 创建临时目录

    一.tempfile介绍 该模块创建临时文件和目录.它适用于所有支持的平台.TemporaryFile,NamedTemporaryFile,TemporaryDirectory,和SpooledTe ...

  3. Python的多进程和多线程

    进程和线程 进程是系统进行资源分配的最小单位,线程是系统进行调度执行的最小单位: 一个应用程序至少包含一个进程,一个进程至少包含一个线程: 每个进程在执行过程中拥有独立的内存空间,而一个进程中的线程之 ...

  4. 一文彻底搞懂JS前端5大模块化规范及其区别

    码文不易,转载请带上本文链接,感谢~ https://www.cnblogs.com/echoyya/p/14577243.html 目录 码文不易,转载请带上本文链接,感谢~ https://www ...

  5. 如何使用Docker部署Go Web应用

    目录 如何使用Docker部署Go Web应用 Docker部署示例 准备代码 创建Docker镜像 编写Dockerfile Dockerfile解析 From Env WORKDIR,COPY,R ...

  6. 第21 章 : Kubernetes 存储架构及插件使用

    Kubernetes 存储架构及插件使用 本文将主要分享以下三方面的内容: Kubernetes 存储体系架构: Flexvolume 介绍及使用: CSI 介绍及使用. Kubernetes 存储体 ...

  7. 整合一套高性能网关Kong

    前言 相信大家对Api网关都比较的熟悉,我们之前的文章也介绍过ASP.NET Core的网关Ocelot,也介绍过Spring Cloud Gateway.说到网关的主要功能,其实总结起来就两个字&q ...

  8. Dynamics CRM开发参考资料

    Developer Guide for Dynamics 365 Customer Engagement https://docs.microsoft.com/en-us/dynamics365/cu ...

  9. 【ProLog - 3.0 进阶:递归】

    [ProLog中的递归] 如果递归中的一个或多个规则引用谓词本身,则对该谓词使用"递归"定义 在使用时,这往往像一条食物链或者族谱的构成(A的爸爸的爸爸,即A的爷爷,是A的长辈) ...

  10. Java后端进阶-网络编程(NIO/BIO)

    Socket编程 BIO网络编程 BIO Server package com.study.hc.net.bio; import java.io.BufferedReader; import java ...