1.安装

直接引入

<script src="vue.js"></script>
<script src="vue-router.js"></script>

npm下载

npm install vue-router

如果在一个模块化工程中使用它,必须要通过 Vue.use() 明确地安装路由功能:

import Vue from 'vue'
import VueRouter from 'vue-router'Vue.use(VueRouter)

2.使用

在router下的js文件中

export default new Router({
routes: [path: '/',component: View]
})

饿了么中路由实例

3.嵌套路由

实际生活中的应用界面,通常由多层嵌套的组件组合而成。嵌套路由即是在原路由中加一个children属性,children可以是一个数组,存放这个父路由的所有子路由;也可以是一个路由文件,文件中存放的路由都该路由的子路由

上图中HomePage为父路由组件,children中的路由为该路由的子路由,子路由中的组件会展示在父组件中(父组件中需要用<router-view></router-view>来渲染子路由中的组件)

使用<router-link></router-link>来切换路由

4.动态匹配路由

我们经常需要把某种模式匹配到的所有路由,全都映射到同个组件。例如,我们有一个 User 组件,对于所有 ID 各不相同的用户,都要使用这个组件来渲染。那么,我们可以在 vue-router 的路由路径中使用“动态路径参数”(dynamic segment) 来达到这个效果:

{path:"/seller:id",//通过不同的id来使不同的商家都使用同一个组件,id可传可不传component: Seller,
}

5.命名路由

有时候,通过一个名称来标识一个路由显得更方便一些,特别是在链接一个路由,或者是执行一些跳转的时候。你可以在创建 Router 实例的时候,在 routes 配置中给某个路由设置名称

{path:"/seller:id",//通过不同的id来使不同的商家都使用同一个组件,id可传可不传name: seller,component: Seller,
}

要链接到一个命名路由,可以给 router-link 的 to 属性传一个对象,对象中可传递参数:

<router-link :to="{ name: 'seller', params: { id: 123 }}">User</router-link>

6.命名视图

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

<router-view></router-view>
<router-view></router-view>

每个路由都被渲染了两次

<router-view name='sidebar'></router-view>
<router-view name='main'></router-view>

一个视图使用一个组件渲染,因此对于同个路由,多个视图就需要多个组件。确保正确使用 components 配置 (带上 s):

routes: [{path: '/',components: {default: Main,sidebar: Sidebar,main: Main}}
]

7.重定向和别名

重定向
重定向(Redirect)就是通过各种方法将各种网络请求重新定个方向转到其它位置,用于网站调整或网页被移到一个新地址,它也是通过 routes 配置来完成,下面例子是从 /a 重定向到 /b:

routes: [{ path: '/a', redirect: '/b' }
]

别名

/a 的别名是 /b,意味着,当用户访问 /b 时,URL 会保持为 /b,但是路由匹配则为 /a,就像用户访问 /a 一样。简单的说就是给 /a 起了一个外号叫做 /b ,但是本质上还是 /a

上面对应的路由配置为:

routes: [{ path: '/a', component: A, alias: '/b' }
]

『别名』的功能让你可以自由地将 UI 结构映射到任意的 URL,而不是受限于配置的嵌套路由结构。

8.编程式导航

除了使用 创建 a 标签来定义导航链接,我们还可以借助 router 的实例方法,通过编写代码来实现

router.push('/');//字符串
router.push({path: '/'});//对象
router.push({name: 'homePage',params: {id: '123'}})//命名路由

#router.replace()与router.push()类似,但router.push()会像history栈添加记录,可以通过router.go(n)来向前和向后多少步来切换路由,router.replace()不会

9.路由组件传参

布尔模式
如果 props 被设置为 true,route.params 将会被设置为组件属性

routes: [{ path: '/user/:id', component: User, props: true }
]

对象模式
如果 props 是一个对象,它会被按原样设置为组件属性。当 props 是静态的时候有用

routes: [{ path: '/promotion/from-newsletter', component: Promotion, props: { newsletterPopup: false } }
]

函数模式
你可以创建一个函数返回 props。这样你便可以将参数转换成另一种类型,将静态值与基于路由的值结合等等

routes: [{ path: '/search', component: SearchUser, props: (route) => ({ query: route.query.q }) }
]

#<router-link></router-link>也可以传递参数,子组件使用props接收

<router-link :seller='seller'></router-link>

饿了么慕课网学习手记(一)Vue-router相关推荐

  1. 通过慕课网学习Python

    通过慕课网学习Python.慕课网-Python入门 老师是:廖雪峰大神.我觉得他讲的非常好.另外,慕课网的练习形式我很喜欢,所以给大家推荐一下. 我买了两本书:<Python编程从入门到实践& ...

  2. Vue 学习(十、 Vue Router - 路由插件 和 Vue 的插件原理)

    文章目录 一.Vue Router - 路由插件 1. 安装 Vue Router 2. Vue Router 路由的基本使用 3. 设置 router-link 4. 编程式路由 5. 路由嵌套 6 ...

  3. 【跟着慕课网学习Python】(1)

    提示:应用的网站为:中国大学MOOC以及Python123.com 目录 网站 一.Python是什么? 二.主要内容 1.静态语言.脚本语言 2.思维形成的步骤 3.以温度转化为框架对Python语 ...

  4. 微信公众号开发整理(一)所有微信资料整理参考慕课网学习而得

    1.www.baidu.com搜索:微信公众平台登录,输入账号密码进行登录 2.登录之后找到左边最后一个菜单:开发==>基本配置,如下,获取开发者ID(AppID)及开发者密码(AppSecre ...

  5. oracle 慕课课程_我在慕课网学习到的oracle

    1. 解锁用户: Alter user tablename(例:scott) account unlock: 2. 登录后切换用户: Conn/connect 用户名/密码@远程机实例名(数据库不在本 ...

  6. Maven慕课网学习笔记

    -唯快不破-maven快速入门 -稳扎稳打-maven核心知识 -实用为先-maven建立web项目 唯快不破-maven快速入门 Maven介绍与环境搭建 Maven是基于项目对象模型(POM),可 ...

  7. Android App压力测试(慕课网学习笔记)

    转载:https://blog.csdn.net/a923751813/article/details/72884826 一  背景 1. 为什么开展压力测试 目标1:提高产品稳定性(产品稳定性是一项 ...

  8. 慕课网微信点餐系统之商品信息加载不出来解决方案

    在通过慕课网学习微信点餐系统的时候遇到 了一个比较奇葩的问题,数据能获取到,数据就是加载不出来 思考:数据能在浏览器显示出来字段也能一 一对应,但是为什么不能显示呢??????? 解决思路:在前端al ...

  9. 夜空中最亮的星:慕课网新手学习指南_慕课手记

    首先标题是为了凑够标准的十个字,如果你这会去数了一下然后想评论说不是十个字,那我佩服你的求知精神...进来的肯定不是看我瞎扯淡的,我们步入正题. 慕课网作为国内不能说是最大,但是起码口碑最好的一个IT ...

最新文章

  1. golang int64转string_Golang 并发数据冲突检测器与并发安全
  2. 参加微软新技术预览大会
  3. Win7 解决宽带错误691的办法
  4. 【HTML+CSS】练习:百度首页模拟
  5. 高级会计师计算机考试中级,会计师需要计算机等级考试吗
  6. Go-json解码到接口及根据键获取值
  7. flock SUSE/RHEL
  8. fatal: could not read Username for 'https://github.com': No such file or directory
  9. weblogic多次连接后tcp服务堵塞_网络编程——服务器篇
  10. php.js 文件下载,使用JavaScript开始下载文件
  11. 阿里员工自愿加班却遭同事骂!网友们炸锅了
  12. C#递归方法遍历目录及子目录
  13. Excel批量对比工具分享
  14. mst358 温控(热敏电阻)调试
  15. runtime error
  16. 计算机桌面窗口背景原始设置,如何设置和更改桌面背景? -电脑资料
  17. pb中数据窗口函数小结
  18. 内外墙乳胶漆颜色怎么搭配,内外墙品牌涂料如何选购?
  19. 2022年执法资格城管执法考试多选题专项训练题及答案
  20. python调用系统软键盘_python库 pywinio虚拟键盘使用

热门文章

  1. 面试官:HashMap了解吗?回答balabala。那你讲讲红黑树吧!
  2. [转载红鱼儿]kbmmw 开发点滴:TkbmMWLock用法
  3. 关于DrvResetPDEV的函数的处理
  4. FD_SET,FD_ISSET这些函数意思
  5. 计算机进制换算方法 ppt,计算机基础数制及其相互转换.ppt
  6. 随机抽人名小程序_岛游网小程序1.0.1版本更新公告
  7. 什么是多线程?如何实现多线程?
  8. css3图像立体显示,CSS3 立体展示/不是正方形的图形
  9. 使用Requests和Lxml库,爬取豆瓣读书TOP250
  10. Unity Shader学习:素描效果