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中级小知识1
首先我们复习之前的小知识,本期博客与之前有关 js数据类型 基本数据类型:string undefined null boolean numbe ...
- 在vue项目里使用jquery
1.NPM 安装 jQuery,项目根目录下运行以下代码 npm install jquery --save 2.webpack配置在项目根目录下的build目录下找到webpack.base.con ...
- PHP自定义curl请求
function http_post($url,$param,$post_file=false,$headers=[]){ $oCurl = curl_init(); if(stripos($url, ...
- 关于UI适配的文档
第一部分:原理 (1)根据当前屏幕尺寸与开发预设屏幕尺寸尺寸得出以下参数. 1 XRatio:当前屏幕尺寸与开发尺寸的X轴比例 2 YRtaio:当前屏幕尺寸与开发尺寸的Y轴比例 3minRatio: ...
- TCP、UDP以及HTTP的简单讲解
先来一个讲TCP.UDP和HTTP关系的 1.TCP/IP是个协议组,可分为三个层次:网络层.传输层和应用层.在网络层有IP协议.ICMP协议.ARP协议.RARP协议和BOOTP协议.在传输层中有T ...
- ZooKeeper是什么
ZooKeeper概念 相信大家对 ZooKeeper 应该不算陌生,但是你真的了解 ZooKeeper 是什么吗?如果别人/面试官让你讲讲 ZooKeeper 是什么,你能回答到哪个地步呢? 本人曾 ...
- java项目打包成可运行的jar,main方法带参数
转载 原文地址:http://www.cnblogs.com/neillee/p/6063808.html#commentform 将 java 项目打包成可运行的 jar 包(main 函数带参数) ...
- PHP 批量操作删除,支持单个删除
PHP 执行部分: <?php include('checkadmin.php'); header('Content-Type: text/html; charset=utf-8'); if( ...
- Linux hostname设置,静态ip设置,hostname与静态ip相互映射
1,hostname设置 永久设置: centos 7 下,切换到root 用户 vi /etc/hostname 输入要修改的hostname centos 6或者其他linux 系统,可能在/et ...
- (Review cs231n) BN and Activation Function
CNN网络的迁移学习(transfer learning) 1.在ImageNet上进行网络的预训练 2.将最上方的层,即分类器移除,然后将整个神经网络看成是固定特征提取器来训练,将这个特征提取器置于 ...