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 内容, ...
随机推荐
- js中级小知识5
元素的属性 div.attributes是所有标签属性构成的数据集合 div.classList是所有class名构成的数组集合 在classList的原型链上可以看到add()和remove() 1 ...
- Dubbo 分布式服务框架入门
要想了解 Dubbo 是什么,我们不防先了解它有什么用.使用场景:比如我想开发一个网上商城项目,这个网上商城呢,比较复杂,分为 pc 端 web 管理后台,微信端销售公众号,那么我们分成四个项目,pc ...
- 第一个微信小程序踩的几个小坑
1.小程序测试调试阶段可以打开项目设置中的“开发环境不校验请求域名.TLS版本及HTTPS证书”配置,即可以和自己的服务器联调了. (需要在工具栏的设置 -> 项目设置 中配置,mac下直接co ...
- C++11 std::call_once:保证函数在任何情况下只调用一次
std::call_once的作用是很简单的, 就是保证函数或者一些代码段在并发或者多线程的情况下,始终只会被执行一次.比如一些init函数,多次调用可能导致各种奇怪问题. 给个例子: #includ ...
- angular--解决angular图片加载失败问题
基于angular4写的一个指令,在ionic3.x项目在用.因为加载图片超时等原因导致图片显示不出来,需要替换成默认或者指定图片 1.err-src.ts import { Directive,In ...
- aop execution 表达式解析
execution(* com.sample.service.impl..*.*(..)) 解释如下: 符号 含义execution()表达式的主体:第一个”*“符号表示返回值的类型任意:com.sa ...
- 原生JavaScript写select下拉选择后跳转页面
<select name="molsel_oprate" onchange="javascript:var obj = event.target; var inde ...
- ORACLE——count() 统计函数的使用
SQL中用于统计的函数时:COUNT(). 针对count函数的使用做一个记录,很简单. 首先我数据库中建个表TEST,数据如下: 表中ID和NAME都是不重复的数据,HOME.TEL.PATH中存在 ...
- ARIMA模型总结
时间序列建模基本步骤 获取被观测系统时间序列数据: 对数据绘图,观测是否为平稳时间序列:对于非平稳时间序列要先进行d阶差分运算,化为平稳时间序列: 经过第二步处理,已经得到平稳时间序列.要对平稳时间序 ...
- codeforces 982B Bus of Characters
题意: 有n排座位,每排有两个座位,每排座位的宽度都不一样. 有2 * n个人要上车,如果是内向的人,那么它会选择一排两个都是空位并且宽度最小的一排去坐: 如果是外向的人,会选择一排座位已经有人坐的, ...