1. 简介

路由,工作原理与路由器相似(路由器将网线总线的IP分发到每一台设备上),Vue中的路由根据用户在网页中的点击,将其引导到对应的页面。

2. 使用步骤

安装vue-router或者直接引入vue-router.js(下载地址:https://router.vuejs.org/

例:SPA页面(Single Page Application,将一个网站的所有页面写在一个文件,通过不同的div进行区分,再通过div的显示、隐藏实现跳转效果)

  • 定义组件对象(页面)、组件模板、注册组件
  • 定义router-link、router-view
    • router-link:组件会被解析为a标签
    • router-view:路由显示的内容会在 router-view 中显示
  • 定义路由规则
  • 注册到根组件中
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script type="text/javascript" src="vue.js"></script>
<script type="text/javascript" src="vue-router.js"></script>
</head>
<body>
<div id="app">
<!-- 4. 定义router-link、router-view -->
<div>
<router-link to='/home'>首页</router-link>
<router-link to='/setting'>设置</router-link>
<router-view></router-view>
</div>
</div>
<!-- 2. 定义组件模板 -->
<template id="home">
<div>
<h3>首页页面</h3>
</div>
</template>
<template id="setting">
<div>
<h3>设置页面</h3>
</div>
</template>
<script type="text/javascript">
//1. 定义组件对象
let Home = {template:'#home'}
let Setting = {template:'#setting'}
//5. 定义路由规则
let route = new VueRouter({
routes:[
{
path:'/home',
component:Home
},
{
path:'/setting',
component:Setting
}
]
})
let app = new Vue({
el:"#app",
//3. 注册到根组件中
components:{
Home,
Setting
},
//6. 注册到根组件中
router:route
})
</script>
</body>
</html>

3. 嵌套路由

实际开发时,一个页面常会嵌套多个组件(页面),如:设置页面中包括个人设置、系统设置等

  • 定义组件对象、组件模板、注册组件
  • 定义router-link、router-view
    • 嵌套的路由,router-link、router-view 定义在嵌套的地方
  • 定义路由规则
    • 嵌套的路由,通过 children 属性定义
  <div id="app">
<!-- 4. 定义router-link、router-view -->
<div>
<router-link to='/home'>首页</router-link>
<router-link to='/setting'>设置</router-link>
<router-view></router-view>
</div>
</div>
<!-- 2. 定义组件模板 -->
<template id="home">
<div>
<h3>首页页面</h3>
</div>
</template>
<template id="setting">
<div>
<h3>设置页面</h3>
<router-link to="/setting/user">个人设置</router-link>
<router-link to="/setting/system">系统设置</router-link>
<router-view></router-view>
</div>
</template>
<template id="user">
<div>
<h3>个人设置页面</h3>
</div>
</template>
<template id="system">
<div>
<h3>系统设置页面</h3>
</div>
</template>
<script type="text/javascript">
//1. 定义组件对象
let Home = {template:'#home'}
let Setting = {template:'#setting'}
let User = {template:'#user'}
let System = {template:'#system'}
//5. 定义路由规则
let route = new VueRouter({
routes:[
{
path:'/home',
component:Home
},
{
path:'/setting',
component:Setting,
children:[
{
path:'/setting/user',
component:User
},
{
path:'/setting/system',
component:System
}
]
}
]
})
let app = new Vue({
el:"#app",
//3. 注册到根组件中
components:{
Home,
Setting,
User,
System
},
//6. 注册到根组件中
router:route
})
</script>

4. 动态路由

同一个路由地址,根据传递的不同参数,显示不同的内容,如:商品详情页,多个商品共用一个页面(带有动态参数)

  • 定义路由规则时,将动态参数使用 :变量 进行参数绑定
<div id="app">
<!-- 4. 定义router-link、router-view -->
<div>
<router-link to='/detail/1'>手机1</router-link>
<router-link to='/detail/2'>手机2</router-link>
<router-view></router-view>
</div>
</div>
<!-- 2. 定义组件模板 -->
<template id="detail">
<div>
<h3>商品详情页</h3>
<p>商品id是:{{this.$route.params.id}}</p>
</div>
</template>
<script type="text/javascript">
//1. 定义组件对象
let Detail = {template:'#detail'}
//5. 定义路由规则
let route = new VueRouter({
routes:[
{
//说明:该处为动态参数,通过this.$route.params.id获取
path:'/detail/:id',
component:Detail
}
]
})
let app = new Vue({
el:"#app",
//3. 注册到根组件中
components:{
Detail
},
//6. 注册到根组件中
router:route
})
</script>

5. 编程式路由

编程式路由,通过js代码实现页面跳转,类似 js 代码 window.location 实现页面跳转

<div id="app">
<div>
<button @click="show">查看手机2商品详情</button><br>
<router-link to='/detail/1'>手机1</router-link>
<router-link to='/detail/2'>手机2</router-link>
<router-view></router-view>
</div>
</div>
<template id="detail">
<div>
<h3>商品详情页</h3>
<p>商品id是:{{this.$route.params.id}}</p>
</div>
</template>
<script type="text/javascript">
let Detail = {template:'#detail'}
let route = new VueRouter({
routes:[
{
path:'/detail/:id',
component:Detail
}
]
})
let app = new Vue({
el:"#app",
components:{
Detail
},
router:route,
methods:{
show(){
this.$router.push({path:'/detail/2'})
}
}
})
</script>

6. 路由重定向

重定向,当访问一个路由地址时,自动跳转至其他的路由地址

例:当打开路由页面时,不显示任何内容(默认无匹配的路由规则)

例子代码

修改代码(在routes中添加红色部分的内容)

      routes:[
{
path:'/home',
component:Home
},
{
path:'/',
redirect:'/home',
component:Home
},
{……}
]

直接打开当前页面时,自动跳转到/home页面(重定向)

Vue.js 相关知识(路由)的更多相关文章

  1. Vue.js相关知识3-路由

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  2. Vue.js相关知识4-路由

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  3. Vue.js相关知识2-组件

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  4. Vue.js相关知识1

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  5. Vue.js 相关知识(动画)

    1. 简介 Vue 在插入.更新或移除 DOM 时,提供多种不同方式的过渡效果,并提供 transition 组件来实现动画效果(用 transition 组件将需执行过渡效果的元素包裹) 语法:&l ...

  6. Vue.js 相关知识(组件)

    1. 组件介绍 组件(component),vue.js最强大的功能之一 作用:封装可重用的代码,通常一个组件就是一个功能体,便于在多个地方都能调用该功能体 根组件:我们实例化的Vue对象就是一个组件 ...

  7. Vue.js 相关知识(基础)

    1. Vue.js 介绍 Vue,读音 /vjuː/,类似于 view),是一套用于构建用户界面的渐进式框架(重点在于视图层). 作者:尤雨溪 注:学习 vue.js 时,一定要抛弃 jQuery 的 ...

  8. Vue.js 相关知识(脚手架)

    1. vue-cli 简介 Vue-cli 是 vue的设计者,为提升开发效率而提供的一个脚手架工具,可通过vue-cli快速构造项目结构 2. vue-cli 安装步骤 安装npm 或 cnpm n ...

  9. vue.js基础知识篇(2):指令详解

    第三章:指令 1.语法 指令以v-打头,它的值限定为绑定表达式,它负责的是按照表达式的值应用某些行为到DOM上. 内部指令有v-show,v-else,v-model,v-repeat,v-for,v ...

随机推荐

  1. Coursera-AndrewNg(吴恩达)机器学习笔记——第四周

    神经网络 1.神经网络发展的动力:在逻辑回归解决复杂的分类问题时,我们使用属性的一些组合来构造新的属性(x12,x1x2,x22...),这样就会造成属性的数目n过多,带来了大量的运算,甚至造成过拟合 ...

  2. maven的下载与安装

    下载路径:http://maven.apache.org/download.cgi 选择打红线的进行下载,我用的版本是3.3.9, 下载后解压该文件,解压后的文件内容如下: 解压完成后配置maven的 ...

  3. [python]pip 版本9.0.1升级到10.0.1故障解决办法

    问题背景: 在做android自动化时使用到第三方库uiautomator时,提示要安装,但安装该uiautomator库时提示当前的pip版本偏低,需要安装10.0.1版本方可.但在升级到升级到该版 ...

  4. Python3 下找不到urllib2的问题

    Python 3.* 用urllib.request来代替原来的urllib2,因此调用的时候改为: >>> import urllib.request >>> u ...

  5. 【转】SVN branches trunk 合并 讲解

    转自:http://blog.csdn.net/e3002/article/details/21469437 使用svn几年了,一直对分支和合并敬而远之,一来是因为分支的管理不该我操心,二来即使涉及到 ...

  6. JS动态生成表格后 合并单元格

    JS动态生成表格后 合并单元格 最近做项目碰到表格中的单元格合并的问题,需求是这样的,首先发ajax请求 请求回来后的数据 动态生成表格数据,但是生成后如果编号或者(根据其他的内容)有相同时,要合并单 ...

  7. 《Java程序设计》第2周学习总结(Markdown语法修改版)

    20175105 2018-2019-2 <Java程序设计>第2周学习总结 Vim操作的一些总结 这些天通过学习,对于vim的操作有了很大的提升,下面我把vim的比较常见的操作方式做了归 ...

  8. python+requests实现接口测试 - cookies的使用 (转载)

    出自:https://www.cnblogs.com/nizhihong/p/6699492.html 在很多时候,发送请求后,服务端会对发送请求方进行身份识别,如果请求中缺少识别信息或存在错误的识别 ...

  9. day29

    今日内容: 异常处理 元类介绍 元类(通过元类中的__init__方法,改变实例化获得的类) 元类(通过元类中的__call__方法,改变实例化获得的类实例化出来的对象) 1.异常处理: 什么是异常处 ...

  10. Web.config中 mode="RemoteOnly" 跟mode="On" 区别

    转载网址:mode="RemoteOnly" 跟mode="On" 区别 <!-- 自定义错误信息 设置 customErrors mode=" ...