文章目录

  • 前言
  • 具体实现
    • index.js:路由器对象模块
    • main.js:入口JS
    • App.vue
    • Messages.vue
    • MessageDetail.vue

前言

具体实现

编写路由的3步1. 定义路由组件    2. 映射路由3. 编写路由2个标签

index.js:路由器对象模块

import Vue from "vue"
import VueRouter from "vue-router"
import About from "../views/About"
import Home from "../views/Home"
import News from "../views/News"
import Messages from "../views/Messages"
import MessageDetail from "../views/MessageDetail"
// 声明使用vue-router插件
/*
内部定义并注册了2个组件标签(router-link/router-view),
给组件对象添加了2个属性:1. $router: 路由器2. $route: 当前路由*/
Vue.use(VueRouter);
export default new VueRouter({routes: [ // 注册应用中所有的路由 将path与路由组件对应{ //一般路由path: "/about",  // path的最左侧 / 为根路径component: About,children:[  //嵌套路由(子路由){path: "news",  //同 “/about/news”component: News},{path: "messages",component: Messages,children:[ //二次嵌套路由{path:"/about/messages/detail/:id", //占位语法 params参数 组件可通过 对象.$route.params.id取出component:MessageDetail}]},{path:"/About",redirect: "/About/news"  //默认显示}]},{path: "/home",component:Home},{  // 自动跳转路由path: "/", redirect:"/home"}]
});

main.js:入口JS

import Vue from "vue"
import App from "./App"
import router from "./router"  //引入路由器,由于是index.js写到这里文件夹就行
new Vue({el: "#app",components: {App},  // 映射组件标签template: "<App/>",  // 指定需要渲染到页面的模板router  // 注册路由器   故任务路由组件对象都有属性$router  $route
});

App.vue

<div class="list-group"><!--生成路由链接--><router-link to="/about" class="list-group-item" >About</router-link><router-link to="/home" class="list-group-item">Home</router-link>
</div>
。。。
<keep-alive>  <!--缓存路由组件:适用低实时性要求--><router-view msg="abc"></router-view>  <!--本页的路由触发-->
</keep-alive>

PS:当组件被选中后,router-link会多出风格类名class=“router-link-exact-active router-link-active”,可认为给该修饰类增加style

.router-link-active{color:red;
}

Messages.vue

<template><div><ul><li v-for="(item,index) in messagesArr" :key="item.id"><router-link :to="`/about/messages/detail/${item.id}`"> {{item.title}}</router-link>  <!--:to的右侧“”里被:强制绑定为变量(用JS语法--><button @click="push(item.id)">push查看</button><button @click="replace(item.id)">replace查看</button></li></ul><hr><router-view></router-view><button @click="$router.back()">回退</button> <!--弹出栈顶地址并访问--></div>
</template>
。。。methods:{push(id) {this.$router.push(`/about/messages/detail/${id}`); //访问该地址并压进栈},replace(id) {this.$router.replace(`/about/messages/detail/${id}`); //访问该地址并替换栈顶地址}}
向路由组件传递数据params:<router-link :to="`/about/messages/detail/${item.id}`"></router-link>props: <router-view msg='abc'>  //别的路由组件需用props接收为自身属性再使用,类似组件间props方式通信

MessageDetail.vue

watch:{$route:function (value) {const id = value.params.id;//.find是返回符合要求的第一个数组元素  .filter返回的是数组this.messageDetail =this.allMessagesDetails.find(detail =>detail.id===id);}}

【Vue】路由器插件——vue-router相关推荐

  1. 安装vue浏览器插件-Vue.js devtools

    一.进入github仓库:https://github.com/vuejs/devtools 可以下载zip包,也可以clone仓库.这里我下载的压缩包. 二.解压后,在终端进入文件夹路径. 解压后推 ...

  2. Vue 学习(十、 Vue Router - 路由插件 和 Vue 的插件原理)

    文章目录 一.Vue Router - 路由插件 1. 安装 Vue Router 2. Vue Router 路由的基本使用 3. 设置 router-link 4. 编程式路由 5. 路由嵌套 6 ...

  3. vue 在浏览器控制台怎么调试 谷歌插件vue Devtools

    vue 在浏览器控制台怎么调试 谷歌插件vue Devtools 问题: vuejs里面的变量,怎么用浏览器的console查看? 例如,想在chrome里用console.log查看变量$data, ...

  4. vue自定义插件 封装一个类似 element 中 message 消息提示框的插件

    vue自定义插件 封装一个类似 element 中 message 消息提示框的插件 一.资源文档 1.vue内置组件 transition 2.Vue.use() 3.Vue.extend() 4. ...

  5. Vue.js服务器端渲染与Vue路由器:分步指南

    当我开始使用Vue收集有关SSR(服务器端渲染)的信息时,我必须从不同的文章以及官方文档中获取相关信息,以便全面了解这个主题. 以下是我在这些来源中发现的一些问题: 很多关于你应该拥有的信息的假设,比 ...

  6. vue 路由重定向_使用Vue和Vue路由器进行高级路由:重定向和Nav Guard

    vue 路由重定向 While the basics of routing in Vue.js have already been covered, today we'll explore some ...

  7. Vue学习之路由(Router)

    Vue学习之 路由(Router) 文章目录 Vue学习之 路由(Router) 一.路由是什么? 二.Vue Router的安装 1.直接下载/CDN 2.NPM安装 三.路由的基础使用 1.定义路 ...

  8. vue之插件 (Plugins)

    Vue插件 vue 通常我们向Vue全局添加一些功能时,会采用插件的模式,它有两种编写方式 对象类型:一个对象,但是必须包含一个 install 的函数,该函数会在安装插件时执行: 函数类型:一个fu ...

  9. 实用VUE 开发插件!!前端必备

    element - 饿了么出品的Vue2的web UI工具套件 Vux - 基于Vue和WeUI的组件库 mint-ui - Vue 2的移动UI元素 iview - 基于 Vuejs 的开源 UI ...

  10. [vue] 怎么在vue中使用插件?

    [vue] 怎么在vue中使用插件? npm 安装 然后再main.js 引入 最后 vue.use(插件名) 个人简介 我是歌谣,欢迎和大家一起交流前后端知识.放弃很容易, 但坚持一定很酷.欢迎大家 ...

最新文章

  1. HTML5原生拖拽/拖放 Drag Drop 详解
  2. 死磕Java并发:J.U.C之并发工具类:CountDownLatch
  3. springcloud 消息队列_全面而且简洁介绍SpringCloud微服务
  4. 一个通用的makefile写法,自动推导文件的依赖关系
  5. python程序打包成安卓app教程_Python打包方法基本应用方式介绍
  6. getHibernateTemplate()的find用法大全
  7. zpk在MATLAB中是什么意思,_MATLAB在控制系统中应用 .ppt
  8. 中国交互式智能板市场趋势报告、技术动态创新及市场预测
  9. nyoj 86 找球号(一)
  10. MySQL数据库(八)
  11. mac搭建k8s练习环境
  12. 切割图片基于人脸识别选出人脸部分
  13. 软考高项 : (22)2016年下半年论文写作真题
  14. mysql中data后面加什么_mysql中data_format用法
  15. 深入理解Java内存模型的volatile语义
  16. 又来神器推荐嘞xshell与winSCP
  17. 1021. Couples
  18. 增量式(相对式)编码器与绝对式编码器工作原理
  19. 2022全网最全的爆款抓包工具,各有千秋
  20. python:max函数

热门文章

  1. ubuntu windows远程桌面连接xrdp相关问题
  2. java获取cpu数量,以及cpu使用率(cpu负载)
  3. 魔兽世界私服trinitycore2的架构——世界对象
  4. Android项目中遇到的坑之(Android圆角圆形图 二)
  5. 【MTK】CTSITS谷歌认证测试项常见fail项解法
  6. python高级函数六剑客
  7. go语言,ok和_,ok模式
  8. 劳动仲裁申请先予执行的规则是怎样的
  9. 设计滴滴打车的新业务/如何提高用户粘性/盈利点/ 监管安全
  10. linuxptp产生pps相关接口