Vue:(三)路由
(一)基础介绍
- vue-router用来构建SPA
- <router-link></router-link>或者this.$router.push({path:' '})
- <router-view></router-view>
- 什么是前端路由?
- 路由是根据不同url地址展示不同的内容或页面
- 前端路由就是把不同路由对应不同的内容或页面的任务交给前端来做,之前是通过服务端根据url的不同返回不同的页面实现的
- 什么时候使用前端路由?
- 在单页面应用,大部分页面结构不变,只改变部分内容的使用
- 前端路由的优缺点:
- 优点:
- 用户体验好,不用每次都从服务器全部获取,可以快速展现给用户
- 缺点:
- 不利于SEO
- 使用浏览器的前进/后退键时会重新发送请求,没有合理地利用缓存
- 单页面无法记住之前滚动的位置,无法在前进/后退时记住滚动的位置
- 优点:
(二)分类
- 动态路由匹配
- 嵌套路由
- 编程式路由
- 命名路由和命名视图(很少用)
(三)动态路由
模式 | 匹配路径 | $router.params |
/user/:username | /user/evan | { username:'evan' } |
/user/:username/post/:post_id | /user/even/post/123 | { username:'evan',post_id:123 } |
//index.js中
import Vue from 'vue'
import Router from 'vue-router'
import GoodsList from './../views/GoodsList'//从某路径引入组件 Vue.use(Router) export default new Router({
router:[
{
path:'/goods/:goodsId/user/:name',//通过此path访问组件内容
name:'GoodsList',
component:GoodsList
}
]
})
//组件间传参,组件中写$router.params.goodsId $router.params.name
(四)嵌套路由
- 路由嵌套路由
//index.js中
import Vue from 'vue'
import Router from 'vue-router'
import GoodsList from './../views/GoodsList'//从某路径引入组件
import Goods1 from './../views/Goods1'//从某路径引入子组件
import Goods2 from './../views/Goods2' Vue.use(Router) export default new Router({
router:[
{
path:'/goods',
name:'GoodsList',
component:GoodsList,
children:[
{
path:'goods1',
name:'goods1',
component:Goods1
},
{
path:'goods2',
name:'goods2',
component:Goods2
},
]
}
]
}) //组件GoodsList中引入子组件Goods1和Goods2
<template>
<div>
<span>{{$router.params.goodsId}}</span>
<span>{{$router.params.name}}</span>
<router-link to="/goods/goods1"></router-link>
<router-link to="/goods/goods2"></router-link>
<div>
<router-view></router-view>
</div>
</div>
</template>
(五)编程式路由
- 通过js来实现页面跳转
- $router.push("name")
- $router.push({path:"name"})
- $router.push({path:"name?a=123"})或者$router.push({path:"name",query:{a=123}})
- $router.go(1)
//index.js中
import Vue from 'vue'
import Router from 'vue-router'
import GoodsList from './../views/GoodsList'//从某路径引入组件
import Car from './../views/Car'//从某路径引入子组件 Vue.use(Router) export default new Router({
router:[
{
path:'/goods',
name:'GoodsList',
component:GoodsList,
{
path:'/car',
component:Car
}
}
]
}) //组件GoodsList.vue中
<template>
<div>
<div>
<router-view></router-view>
</div>
<router-link to="/car"></router-link>
<button @click="jump"></router-link>
</div>
</template>
<script>
export default{
data(){
return{
msg:'hello vue'
}
},
methods:{
jump(){
this.$router.push({path:'/car?goodsId=123'});//可以跳转页面...go...
}
}
}
</script> //组件Car.vue中
<template>
<div>
<span>{{$router.query.goodsId}}</span>//页面间传参
</div>
</template>
<script>
export default{
data(){
return{
msg:'hello vue'
}
}
}
</script>
(六)命名路由和命名视图
- 给路由定义不同的名字,根据名字进行匹配
- 给不同的router-view定义名字,通过名字进行对应组件的渲染
Vue:(三)路由的更多相关文章
- vue嵌套路由-query传递参数(三)
在嵌套路由中我们经常会遇到父路由向子路由里面传递参数,传递参数有两种方法,通过 query 或者 params index.html <div id="app"> &l ...
- 前端MVC Vue2学习总结(八)——Vue Router路由、Vuex状态管理、Element-UI
一.Vue Router路由 二.Vuex状态管理 三.Element-UI Element-UI是饿了么前端团队推出的一款基于Vue.js 2.0 的桌面端UI框架,手机端有对应框架是 Mint U ...
- Vue.js路由
有时候,我们在用vue的时候会有这样的需求,比如一个管理系统,点了左边的菜单栏,右边跳转到一个新的页面中,而且刷新的时候还会停留在原来打开的页面. 又或者,一个页面中几个不同的画面来回点击切换,这两种 ...
- Vue.js路由详解
有时候,我们在用vue的时候会有这样的需求,比如一个管理系统,点了左边的菜单栏,右边跳转到一个新的页面中,而且刷新的时候还会停留在原来打开的页面. 又或者,一个页面中几个不同的画面来回点击切换,这两种 ...
- vue权限路由实现方式总结二
之前已经写过一篇关于vue权限路由实现方式总结的文章,经过一段时间的踩坑和总结,下面说说目前我认为比较"完美"的一种方案:菜单与路由完全由后端提供. 菜单与路由完全由后端返回 这种 ...
- vue+element-ui路由配置相关
vue+element-ui路由配置相关 转自:http://www.cnblogs.com/MonaSong/p/6703804.html vue-router2中说明了,子路由前面可以不加'/', ...
- vue嵌套路由 && 404重定向
第一部分: vue嵌套路由 嵌套路由是什么? 嵌套路由就是在一个被路由过来的页面下可以继续使用路由,嵌套也就是路由中的路由的意思. 比如在vue中,我们如果不使用嵌套路由,那么只有一个<rou ...
- vue嵌套路由与404重定向实现方法分析
第一部分: vue嵌套路由 嵌套路由是什么? 嵌套路由就是在一个被路由过来的页面下可以继续使用路由,嵌套也就是路由中的路由的意思. 比如在vue中,我们如果不使用嵌套路由,那么只有一个<rout ...
- vue的路由设置小结
vue的路由设置小结 // 异步路由的编写示例.其中针对component字段进行懒加载及分块处理,提升首屏加载速度的同时,也可以手动控制让某些页面合并到一个单独的js文件中,而不是每个页面都是一个j ...
- vue的路由配置
路由,其实就是指向的意思,当我点击页面上的home按钮时,页面中就要显示home的内容,如果点击页面上的about 按钮,页面中就要显示about 的内容.Home按钮 => home 内容, ...
随机推荐
- c3p0 空指针异常 com.mchange.v2.resourcepool.CannotAcquireResourceException: A ResourcePool could not acquire a resource from its primary factory or source.
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@11d9f05 -- Acquisition Attempt Failed!!! C ...
- 免费API 接口罗列,再也不愁没有服务器开发不了APP了(下)【申明:来源于网络】
免费API 接口罗列,再也不愁没有服务器开发不了APP了(下)[申明:来源于网络] 地址:http://mp.weixin.qq.com/s/QzZTIG-LHlGOrzfdvCVR1g
- linux_rename命令用法
rename在man中的解释为: NAME rename - rename files SYNOPSIS rename [options] expression replacement file... ...
- luogu2839 [国家集训队]middle
题目链接:洛谷 题目大意:给定一个长度为$n$的序列,每次询问左端点在$[a,b]$,右端点在$[c,d]$的所有子区间的中位数的最大值.(强制在线) 这里的中位数定义为,对于一个长度为$n$的序列排 ...
- Hyper-v 虚拟机 关闭服务
1.Win + R 运行 2.输入 services.msc 回车 3.禁用下图的服务
- Web 开发技术文档大全
https://developer.mozilla.org/zh-CN/docs/Web 基础 HTML CSS HTTP 脚本 JavaScript Web API 事件 Web Component ...
- 【Assembly】-NO.88.Assembly.2.滴水逆向.1.002-【位运算及基础指令】-
1.0.0 Summary Tittle:[Assembly]-NO.88.Assembly.2.滴水逆向.1.002-[]- Style:Java Series:Log4j Since:2018-0 ...
- Chart控件的用法
最近用到统计方面的功能,文档统计不用说,都是导出Excel,若要视图效果,这里推荐一个Asp.NET中的控件Char. 简单示例: 视图显示说明: 可以设定Series的ChartType属性值, ...
- windows 如何创建硬链接
输入代码:mklink /d F:\ D:\pdf mklink /d 是命令语句,空格,接着是放置硬链接的位置,空格,再是目标文件夹.
- Python多线程threading的使用
一. threading的参数传递,参数之后的’,‘不能少,此处的’,‘是用来区分此参数作为元组(包含多个参数)来传递的,而不是单个参数传递 #coding:utf- import threading ...