Vue路由

vue-router 路由 https://router.vuejs.org/zh/

我们要实现单页面应用,所以需要学习路由。

跳转路由的几种方式:

1、声明式:

    1) 根据路由路径(/home/sort/detail)跳转 <router-link :to="{path: '/home/sort/detail', query:{id: 'abc'}}">点击查看子页面    </router-link>
     2) 根据路由名称(detail)跳转 <router-link :to="{name: 'detail', params:{id: 'abc'}}">点击查看子页面</router-link>
            :to=""  可以实现绑定动态的 路由 和 参数

2、编程式:

   1) this.$router.push({path: '/home/sort/detail',query:{id: 'abc'}})
   2) this.$router.push({name: 'detail',params:{id: 'abc'}})

备注: params 和 query 传参的区别:
1、params传参时 参数不会出现在url的路径上面, 但是刷新页面时param里面的数据会消失
2、query传参时 参数出现在url的路径上面, 刷新页面时query里面的数据不变

传统的网页:地址各不一样
超市
https://pro.m.jd.com/mall/active/2hqsQcyM5bEUVSStkN3BwrBHqVLd/index.html
牛奶
https://pro.m.jd.com/mall/active/3nxcGU8mCsjXN5MjTGQ1AX2LbdfF/index.html

单页面应用

http://ustbhuangyi.com/music/#/recommend

spa的实现

页面只有一个,你要根据用户的地址栏中信息去展示不同的内容给用户,怎么办?

SPA single-page-application 单页面应用 一个程序只有一个页面

优点:提供流畅的用户体验,避免了不必要的跳转和重新渲染,服务器压力小。

缺点:不利于seo,初次加载页面更耗时,历史管理需要编程实现

spa的实现

页面只有一个,但是你要展示不同的内容给用户,怎么办?

两种方法:

1> 动态路由

2> 路由

<component :is=""></component>
  • 动态组件的功能有限(例如:不能传参),我们可以使用另外一种方法-路由

使用路由的步骤:

第一步:准备好组件

image

第二步:router-link和router-view准备好视图

image
<div style="font-weight:bold">router-link最后会编译成a标签,如下:</div>
image
  • 注:可以为router-link标签默认渲染为a标签,我们可以给它指定tag属性指定最后渲染为什么标签
image
image

第三步:实例化 路由对象

配置路由,指定路由和组件之间的关系

image

第四步:在vue实例中配置router

image

嵌套路由

在实际开发中的界面,通常有多层嵌套的组件的组合而成,如:设置项下面还有设置的子项

image
  • 实现

1>设置视图 在子组件中再次使用router-link和router-view

2>修改路由配置 设置相关路由的children项

  • 实例

第一步:准备好子组件

image

第二步:设置set的组件视图

因为这两个子组件将会嵌套在set视图中,所以我们需要去修改set组件的视图,:加上router-link和router-view


image

第三步:修改路由配置

image

动态路由 - 传递参数

例如:

http://ustbhuangyi.com/music/#/recommend/6689258475

http://ustbhuangyi.com/music/#/recommend/6570024680

上面两个地址实际共用一个页面,但由于传递的参数不同,则显示内容也不同。这种带参数的路由,就是动态路由。

  • 实现

可以在vue-router的路由路径中使用动态路径参数

动态路径参数 以冒号开头

{path:'/detail/:id',component:组件}

当匹配到一个路由时,参数值会被设置到this.$route.params.id,可以在每个组件内使用。

  • 示例:

在上面的基础上再加一个显示商品详情detail的组件,它的功能是根据不同的商品编号显示不同的商品详情,再显示出来

第一步:创建一个detail组件

image
image

第二步:修改路由配置

image

编程式路由--实现页面跳转

对比理解:页面的跳转有两种方法:

1> a标签可以设置href之后,实现页面跳转

2>另外,还有一种方法去实现页面跳转:写代码

window.location = ''

  • 编程式路由:就想通过代码设置localtion一样,去进行页面跳转
router.push({path:'index'})
image

点击上方按钮,直接打开商品编号为100的详情页

image

注:这里的参数是router,而不是this.route.params.num

声明式 编程式
<router-link to="/news"></router-link> router.push

this.$router.replace(),不会像history栈里添加新的记录

声明式 编程式
<router-link to="/news" replace></router-link> router.replace

this.$router.go(-1) 向前一步

可以通过this.router访问路由,this.route访问当前的路由

this.$router.push('/index') //字符串路径  this.$router.push('index')

this.$router.push({path:'/index'})  //对象

this.$router.push({name:'index'})   //对象  name

this.$router.push({name:'index',params:{num:100})  //通过this.$route.params.num获取

this.$router.push({name:'index',query:{num:100})   //通过this.$route.query.num 获取

命名视图

重定向:当我们再地址栏中访问一个a网址时,会跳转到b网址

直接通过路由设置来完成

image
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,794评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,050评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,587评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,861评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,901评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,898评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,832评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,617评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,077评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,349评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,483评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,199评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,824评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,442评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,632评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,474评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,393评论 2 352