3.6.重定向和别名

3.6.1.重定向

路由重定向通俗的说就是从一个路由重新定位跳转到另一个路由,例如:访问的 “/a” 重定向到“/b”

重定向也是通过配置routes选项完成的

routes: [
{
path: '/course',
component: Course
},
{
path: '/hello',
component: Hello,
redirect: '/course'
}]

上面代码中,访问 ‘/hello’ 并不会去渲染Hello组件,而是会跳转到路由‘/course’,去渲染course组件

重定向的目标可以是一个命名路由

routes: [
{
path: '/questions',
name: 'wenda',
component: Questions
},
{
path: '/hello',
component: Hello,
redirect: {name: 'wenda'}
}]

上面代码配置后,访问 ‘/hello’就会跳转到命名路由‘wenda’,即‘/questions’,从而去渲染Questions组件

重定向的目标也可以是一个方法,在方法中可以写一些逻辑代码

{
path: '/hello',
component: Hello,
redirect: (to) => {
if (to.hash) {
return '/questions'
} else {
return '/course'
}
}
}

这里的to是一个对象,大家可以尝试着打印出来看看这里面到底是些什么内容

3.6.2.别名

别名从字面上理解为别的名字,比如有的人有一个中文名,还有一个别的名字英文名。举例: ‘/hello’ 有一个别名 ‘/hi’, 当用户访问‘/hi’的时候,url会保持不变,但是渲染的还是'/hello'对应的组件,说白了就是不管用户访问的是'/hello',还是‘/hi’,找到的都是同一个人(Hello组件)

routes: [
{
path: '/hello',
component: Hello,
alias: '/hi'
}]

3.7.编程式导航

3.7.1.声明式导航

前面我们学过的通过这种方式来定义导航链接的方式叫做声明式导航,特点就是要在tempalte中去写跳转链接,通过生成a标签的形势跳转

 <ul>
<li><router-link :to="index" active-class="nav-active" event="mouseover">首页</router-link></li>
<li><router-link :to="course" event="mouseover">课程</router-link></li>
<li><router-link :to="vip" event="mouseover">会员</router-link></li>
<li><router-link :to="question" event="mouseover">问答</router-link></li>
</ul>

3.7.2.编程式导航

编程式导航通俗的说就是vue-router给我们提供了一堆方法,我们通过在js中编写代码来实现导航切换,这些常用方法包括:back、forward、go、push、replace等

1.push 想要导航到不同的 URL,则使用 router.push 方法。这个方法会向 history 栈添加一个新的记录

<template>
<div class="page">
<button @click="pushHandle">push方法</button>
<router-view></router-view>
<router-view name="a"></router-view>
<router-view name="b"></router-view>
</div>
</template> <script type="text/ecmascript-6">
export default {
data () {
return { }
},
components: { },
methods: {
pushHandle () {
// this.$router.push('/hello')
// push内部可以给对象
this.$router.push({name: 'wenda'})
}
}
}
</script> <style scoped>
.page {
border: 1px solid #ccc;
background-color: #ccc;
height: 800px; background-color: aquamarine;
}
</style>

注意: 在 Vue 实例内部,你可以通过 $router 访问路由实例

2.replace 跟 router.push 很像,唯一的不同就是,它不会向 history 添加新记录,而是跟它的方法名一样 —— 替换掉当前的 history 记录

methods: {
pushHandle () {
// this.$router.push('/hello') push内部直接给字符串
// push内部可以给对象
this.$router.push({name: 'wenda'})
},
replaceHandle () {
this.$router.replace('/questions')
}
}

3.back back方法可以回到上一步

methods: {
pushHandle () {
// this.$router.push('/hello') push内部直接给字符串
// push内部可以给对象
this.$router.push({name: 'wenda'})
},
replaceHandle () {
this.$router.replace('/questions')
},
backHandle () {
//回到上一步
this.$router.back()
}
}

4.forward forward方法可以前进一步

  methods: {
pushHandle () {
// this.$router.push('/hello') push内部直接给字符串
// push内部可以给对象
this.$router.push({name: 'wenda'})
},
replaceHandle () {
this.$router.replace('/questions')
},
backHandle () {
//回到上一步
this.$router.back()
},
forwardHandle () {
//前进一步
this.$router.forward()
}
}
}

5.go go方法可以一次跳多步

  methods: {
pushHandle () {
// this.$router.push('/hello') push内部直接给字符串
// push内部可以给对象
this.$router.push({name: 'wenda'})
},
replaceHandle () {
this.$router.replace('/questions')
},
backHandle () {
this.$router.back()
},
forwardHandle () {
this.$router.forward()
},
goHandle () {
// 前进2步 注意:go里面如果是正数表示前进,如果是负数表示后退
this.$router.go(2)
}
}
}

螺钉课堂视频课程地址:http://edu.nodeing.com

vue全家桶(2.4)的更多相关文章

  1. 用 Vue 全家桶二次开发 V2EX 社区

    一.开发背景 为了全面的熟悉Vue+Vue-router+Vuex+axios技术栈,结合V2EX的开放API开发了这个简洁版的V2EX. 在线预览 (为了实现跨域,直接npm run dev部署的, ...

  2. Vue全家桶

    简介 “简单却不失优雅,小巧而不乏大匠”. Vue.js 是一个JavaScriptMVVM库,是一套构建用户界面的渐进式框架.它是以数据驱动和组件化的思想构建的,采用自底向上增量开发的设计. 为什么 ...

  3. 从零开始系列之vue全家桶(3)安装使用vuex

    什么是vuex? vuex:Vue提供的状态管理工具,用于同一管理我们项目中各种数据的交互和重用,存储我们需要用到数据对象. 即data中属性同时有一个或几个组件同时使用,就是data中共用的属性. ...

  4. 使用vue全家桶制作博客网站

    前面的话 笔者在做一个完整的博客上线项目,包括前台.后台.后端接口和服务器配置.本文将详细介绍使用vue全家桶制作的博客网站 概述 该项目是基于vue全家桶(vue.vue-router.vuex.v ...

  5. 转载: 使用vue全家桶制作博客网站 HTML5 移动网站制作的好教程

    使用vue全家桶制作博客网站   前面的话 笔者在做一个完整的博客上线项目,包括前台.后台.后端接口和服务器配置.本文将详细介绍使用vue全家桶制作的博客网站 概述 该项目是基于vue全家桶(vue. ...

  6. Vue全家桶介绍

    一直不清楚全家桶是什么玩意,上网搜了一下,才知道就是平时项目中使用的几个依赖包,下面分享一下 Vue 全家桶介绍 Vue有著名的全家桶系列,包含了vue-router(http://router.vu ...

  7. 一个简单的假vue全家桶(vue+vue-router+require)

    首先说明我觉得这是一个比较好理解的vue全家桶(虽然是假的),模块化也是用require来做的,而且如果后期有必要压缩我也会用gulp来做 1.依赖个个本地模块,require只是用来载入page,这 ...

  8. Vue 全家桶 + Electron 开发的一个跨三端的应用

    代码地址如下:http://www.demodashi.com/demo/11738.html GitHub Repo:vue-objccn Follow: halfrost · GitHub 利用 ...

  9. Vue全家桶了解一下(待补充)

    vue全家桶了解一下 一.vue+vue-router+vuex+axios1.vue:使用vue-cli,生成最基本的vue项目2.vue-router:vue项目中的路由管理插件3.vuex:vu ...

  10. 升级vue全家桶过程记录

    背景 如果你使用了element-ui的el-tabs组件,并且想要单独升级element-ui至2.10.0,你会发现,使用了el-tabs组件的页面只要打开就卡死.原因是element-ui~2. ...

随机推荐

  1. Chisel3-Intellij IDEA中使用sbt构建Chisel项目

    https://mp.weixin.qq.com/s/gssjiiPW6zUzKwCFZdNduw   1. 使用Intellij IDEA创建Scala项目   Chisel项目,就是构建Scala ...

  2. ASP.NET实现一个在线音乐统计网站(歌手,音乐,角色……增删改查)

    这里更多的是当作随身笔记使用,记录一下学到的知识,以便淡忘的时候能快速回顾 当前步骤是该项目的完结部分(前面由于没有时间整理了,直接发一个大完结吧) 第一部分 第二部分 源码已上传GitHub:这里有 ...

  3. Java实现 蓝桥杯VIP 算法训练 P0504

    算法训练 P0504 时间限制:1.0s 内存限制:256.0MB Anagrams指的是具有如下特性的两个单词:在这两个单词当中,每一个英文字母(不区分大小写)所出现的次数都是相同的.例如,Uncl ...

  4. Java实现 LeetCode 44 通配符匹配

    44. 通配符匹配 给定一个字符串 (s) 和一个字符模式 § ,实现一个支持 '?' 和 '*' 的通配符匹配. '?' 可以匹配任何单个字符. '*' 可以匹配任意字符串(包括空字符串). 两个字 ...

  5. java实现第五届蓝桥杯六角幻方

    六角幻方 里面的*在编写的时候会自动编译成线,这里就用代码的格式把题目弄过来 把 1 2 3 ... 19 共19个整数排列成六角形状,如下: * * * * * * * * * * * * * * ...

  6. Python实现海贼王的歌词组成词云图

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:一粒米饭 喜欢的朋友欢迎关注小编,除了分享技术文章之外还有很多福利, ...

  7. [寒假学习]ps知识

    小学就开始学了,还是要感谢当时年轻不懂事到处研究怎么画画哈哈哈哈,不过到现在有点忘,寒假在家禁足也无聊,寻思着重拾画笔来着,复习一下,冲! 为了防止看完就忘用博客记录一下小笔记   1. 一些快捷键的 ...

  8. 环境篇:CM+CDH6.3.2环境搭建(全网最全)

    环境篇:CM+CDH6.3.2环境搭建(全网最全) 一 环境准备 1.1 三台虚拟机准备 Master( 32g内存 + 100g硬盘 + 4cpu + 每个cpu2核) 2台Slave( 12g内存 ...

  9. Autoware 进行 Robosense-16 线雷达与 ZED 双目相机联合标定!

    项目要标定雷达和相机,这里记录下我标定过程,用的速腾 Robosense - 16 线雷达和 ZED 双目相机. 一.编译安装 Autoware-1.10.0 我没有安装最新版本的 Autoware, ...

  10. DRY原则的一个简单实践

    转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 原文出处:https://dzone.com/articles/dry-dont-repeat-yourse ...