初识vue路由

什么是vue Router?

Vue Router 是 Vue.js官方的路由管理器。它和 Vue.js 的核心深度集成,让构建单页面应用变得易如反掌。

vue Router包含的功能有哪些?

1.嵌套的路由/视图表
2.模块化的、基于组件的路由配置
3.路由参数、查询、通配符
4.基于 Vue.js 过渡系统的视图过渡效果
5.细粒度的导航控制
6.带有自动激活的 CSS class 的链接
7.HTML5 历史模式或 hash 模式,在 IE9 中自动降级
8.自定义的滚动条行为

vue Router安装方法:

npm install vue-router

两种引入路由组件的方式

第一种
import Singer from './../views/singer.vue'
{
    path: '/',
    component:Singer
}
第二种
{
    path: '/index',
    component: () => import('./../views/index.vue')
}

重定向

把当前访问的路径,重定向到另一个位置重定向也是通过 routes 配置来完成,下面例子是从 /main 重定向到 /home:

const router = new VueRouter({
  routes: [
    { path: '/main', redirect: '/home' }
  ]
})

重定向的目标也可以是一个命名的路由:

const router = new VueRouter({
  routes: [
    { path: '/a', redirect: { name: 'foo' }}
  ]
})

重定向的目标甚至可以是一个方法,动态返回重定向目标:

const router = new VueRouter({
  routes: [
    { path: '/a', redirect: to => {
      // 方法接收 目标路由 作为参数
      // return 重定向的 字符串路径/路径对象
    }}
  ]
})

命名路由与别名

{
    path: '/',
    name: "home",      // 命名路由
    alias: 'home_page', // 别名,指的是home_page和home这两个名字指向的是同一个页面
    component: Home,
  },

动态路由

定义动态路由

{
    path: '/argu/:name',  // 动态路由
    name: 'argu',        // 命名路由
    component: ()=>import('@/views/Argu.vue'),
  }

获取动态路由的参数

{{ $route.params.name }}
$route:当前加载页面的路由对象

嵌套路由

{
    path: '/parent',
    name: 'parent',
    component: ()=> import('@/views/Parent.vue'),
    children: [
      {
        <!-- 第一个子路由 -->
        path: 'child1',
        component: () => import("@/views/Child1.vue")
      },
      {
        <!-- 第二个子路由 -->
        path: 'child2',
        component: () => import("@/views/Child2.vue")
      }
    ]
  }
  http://localhost:8080/#/parent/child1
  http://localhost:8080/#/parent/child2

命名视图

有时候想展示多个视图,而不是嵌套展示,例如创建一个布局,有 email 和 tel 两个视图,这个时候命名视图就派上用场了。你可以在界面中拥有多个单独命名的视图,而不是只有一个单独的出口。如果 router-view 没有设置名字,那么默认为 default。

<!-- 默认的是default -->
<router-view ></router-view >
<router-view name="email"></router-view >
<router-view name="tel"/></router-view >
{
  // 命名视图
  path: '/named_view',
  // 这里有s,代表多个组件
  components: {
    default: () => import("@/views/Child.vue"),
    email: () => import("@/views/Email.vue"),
    tel: ()=> import("@/views/Tel.vue")
  }
}

路由如何展示到页面上

<!-- 路径方式 -->
<router-link to="/">Home</router-link>
<!-- 命名路由的方法,此方法必须给路由命名 -->
<router-link :to="{ name: 'about' }">About</router-link>
或者
<router-link v-bind:to="{ name: 'about' }">About</router-link>
<router-link :to="about">About</router-link>
<!-- 命名的路由 -->
<router-link :to="{ name: 'user', params: { userId: 123 }}">User</router-link>
<!-- 带查询参数,下面的结果为 /register?plan=private -->
<router-link :to="{ path: 'register', query: { plan: 'private' }}">Register</router-link>

编程式的导航

js操作路由

1、返回上一页

第一种方式
this.$router.back();
第二种方式
this.$router.go(-1);

2、前进一页

this.$router.go(1)

3、跳转到某个页面

方法一:路径方法
this.$router.push("/parent")
方法二:命名路由的方法
this.$router.push({
    name: 'parent'
})
// 也可以在参数中添加一些信息
this.$router.push({
  // 参数(查询信息)
  name: "parent",
  query: {
    name: 'music'
  }
  // 或者
  // 参数
  name: 'argu',
  params: {
    name: "music"
  }
  // 或者(ES6的模板语法)
  path: `/argu/${name}`
})

4、替换到某个路由

this.$router.replace({name:"parent"})

跳转与替换的区别:
replace:
当使用push时,会在浏览历史留下记录
replace的话,浏览历史会被替换,不会留下以前的记录。
暂时先到这里,后面再更新吧。

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

推荐阅读更多精彩内容

  • 本文面向纯粹的vue路由小白,采用 head first的文风,重点在于解释清楚vue路由的基本形象,传达路由的设...
    水永舟亢阅读 2,271评论 1 8
  • SPA单页应用 传统的项目大多使用多页面结构,需要切换内容的时候我们往往会进行单个html文件的跳转,这个时候受网...
    视觉派Pie阅读 11,829评论 1 55
  • Vue八个生命周期 beforeCreate【创建前】created【创建后】 beforeMount【载入前】 ...
    艾萨克菊花阅读 1,312评论 0 12
  • 安装 直接下载 在Vue后面加载vue-router,它会自动安装的: NPM 如果在一个模块化工程中使用它,必须...
    oWSQo阅读 769评论 0 0
  • 两岸青山数仞峰。 万古堤防魂梦断, 千秋石堰影朦胧。 孤帆鹜棹空流尽, 九曲夷江化彩虹, 紫宇云帘明玉镜, 莲潭卧...
    刘小地阅读 377评论 3 8