Vue.js 相关知识(路由)
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 相关知识(路由)的更多相关文章
- Vue.js相关知识3-路由
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- Vue.js相关知识4-路由
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- Vue.js相关知识2-组件
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- Vue.js相关知识1
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- Vue.js 相关知识(动画)
1. 简介 Vue 在插入.更新或移除 DOM 时,提供多种不同方式的过渡效果,并提供 transition 组件来实现动画效果(用 transition 组件将需执行过渡效果的元素包裹) 语法:&l ...
- Vue.js 相关知识(组件)
1. 组件介绍 组件(component),vue.js最强大的功能之一 作用:封装可重用的代码,通常一个组件就是一个功能体,便于在多个地方都能调用该功能体 根组件:我们实例化的Vue对象就是一个组件 ...
- Vue.js 相关知识(基础)
1. Vue.js 介绍 Vue,读音 /vjuː/,类似于 view),是一套用于构建用户界面的渐进式框架(重点在于视图层). 作者:尤雨溪 注:学习 vue.js 时,一定要抛弃 jQuery 的 ...
- Vue.js 相关知识(脚手架)
1. vue-cli 简介 Vue-cli 是 vue的设计者,为提升开发效率而提供的一个脚手架工具,可通过vue-cli快速构造项目结构 2. vue-cli 安装步骤 安装npm 或 cnpm n ...
- vue.js基础知识篇(2):指令详解
第三章:指令 1.语法 指令以v-打头,它的值限定为绑定表达式,它负责的是按照表达式的值应用某些行为到DOM上. 内部指令有v-show,v-else,v-model,v-repeat,v-for,v ...
随机推荐
- MySQL基础之 支持的数据类型
MySQL的数值类型 整数类型 字节 有符号 无符号 TINYINT 1 -128~+127 0~255 SAMLLINT 2 -32768~+32767 0~65535 MEDIUMINT 3 -8 ...
- 乘风破浪:LeetCode真题_038_Count and Say
乘风破浪:LeetCode真题_038_Count and Say 一.前言 这一道题目,很类似于小学的问题,但是如果硬是要将输入和结果产生数值上的联系就会产生混乱了,因此我们要打破思维定势. ...
- Oracle 12C Data Gurad RAC TO RAC
Oracle 12C RAC TO RAC Data Guard on RHEL7 0.环境说明 primary db physical standby 操作系统 rhel7 x86_64 rhe ...
- Codeforces Round #553 (Div. 2)B. Dima and a Bad XOR 思维构造+异或警告
题意: 给出一个矩阵n(<=500)*m(<=500)每一行任选一个数 异或在一起 求一个 异或在一起不为0 的每行的取值列号 思路: 异或的性质 交换律 x1^x2^x3==x3^x2 ...
- (mac系统下)mysql 入门
1.安装好mysql之后并且服务启动,系统偏好设置里有启动mysql服务的按钮 看到running表示可用 2.通过终端访问mysql 先到mysql的路径下(默认安装没有配置环境变量):cd /us ...
- mysql 批量修改字段方法
一.正式环境操作注意事项: .关闭应用访问或者设置数据库只读 mysql设为只读方法: 开启只读: mysql> show global variables like "%read_o ...
- 常用lua代码块
1.读取请求体中参数 local request_method = ngx.var.request_method local args --获取参数的值 if "GET" == r ...
- Python2.7-string模块
string模块 1.模块内定义的常数 字母(ascii_letters.letters),数字(digits.hexdigits.octdigits),空格(whitespace),大小写(asci ...
- Python2.7-math, cmath
math,cmath 模块,提供了用C标准定义的数学函数,简单说就是效率较高,cmath 不仅有 math 的功能,还增加了计算复数的函数.这两个模块返回的值基本上为 float 类型,除非明确指出返 ...
- redis主从搭建
两台服务器 127.0.0.101 A 主服务器 127.0.0.108 B 从服务器 从服务器设置 1.修改redis.conf 依次修改daemonize no改为daemonize yes 默 ...