美文网首页
Vue-Router

Vue-Router

作者: 名字是乱打的 | 来源:发表于2020-06-05 10:59 被阅读0次

一 .什么是路由?

路由是一个网络工程里面的术语。路由(routing)就是通过互联的网络把信息从源地址传输到目的地址的活动. --- 维基百科

二 .路由器提供了两种机制: 路由和转送.

  • 路由是决定数据包从来源到目的地的路径.
  • 转送将输入端的数据转移到合适的输出端.
  • 路由中有一个非常重要的概念叫路由表.路由表本质上就是一个映射表, 决定了数据包的指向.

三 .Vue-router的功能

*Vue Router是Vue.js的官方路由器。它与Vue.js核心深度集成,使使用Vue.js轻松构建单页应用程序变得轻而易举。功能包括:

  • 嵌套路线/视图映射
  • 模块化,基于组件的路由器配置
  • 路由参数,查询,通配符
  • 查看由Vue.js过渡系统提供动力的过渡效果
  • 细粒度的导航控制
  • 与自动活动CSS类的链接
  • HTML5历史记录模式或哈希模式,在IE9中具有自动备用
  • 可自定义的滚动行为
Vue-router构建单应用界面的核心

改变URL,但是页面不进行整体的刷新。
如何做到这一点呢?

方法一:URL的hash
  • URL的hash也就是锚点(#), 本质上是改变window.location的href属性.
  • 我们可以通过直接赋值location.hash来改变href, 但是页面不发生刷新


方法二:history接口

history接口是HTML5新增的, 它有五种模式改变URL而不刷新页面.

  • history.pushState()

  • history.replaceState()

  • history.go()

  • ps:
    上面只演示了三个方法
    因为 history.back() 等价于 history.go(-1)
    history.forward() 则等价于 history.go(1)
    这三个接口等同于浏览器界面的前进后退。

四 .vue-router是基于路由和组件的

路由用于设定访问路径, 将路径和组件映射起来.
在vue-router的单页面应用中, 页面的路径的改变就是组件的切换.

五. 安装和使用vue-router

因为我们已经学习了webpack, 后续开发中主要是通过工程化的方式进行开发的.我们直接使用npm来安装路由即可.

  • 步骤一: 安装vue-router
    npm install vue-router --save

  • 步骤二: 在模块化工程中使用它(因为是一个插件, 所以可以通过Vue.use()来安装路由功能)

    • 第一步:router/index.js中导入路由对象,并且调用 Vue.use(VueRouter)
    • 第二步:router/index.js中创建路由实例,并且传入路由映射配置
    • 第三步:在Vue实例中挂载创建的路由实例 左边创建导入使用Vue-router并配置映射关系,
  • 使用vue-router的步骤:

    • 第一步: 创建路由组件
    • 第二步: 配置路由映射: 组件和路径映射关系
    • 第三步: 使用路由: 通过<router-link>和<router-view>
      <router-link>: 该标签是一个vue-router中已经内置的组件, 它会被渲染成一个<a>标签.
      <router-view>: 该标签会根据当前的路径, 动态渲染出不同的组件.
      网页的其他内容, 比如顶部的标题/导航, 或者底部的一些版权信息等会和<router-view>处于同一个等级.
      在路由切换时, 切换的是<router-view>挂载的组件, 其他内容不会发生改变.
      步骤图解 效果图
路由的默认路径--redirect

路由的默认路径即:默认情况下, 进入网站的首页, 我们希望<router-view>渲染首页的内容.
但是我们的实现中, 默认没有显示首页组件, 必须让用户点击才可以.

如何可以让路径默认跳到到首页, 并且<router-view>渲染首页组件呢?
我们只需要配置多配置一个映射就可以了.
配置解析:

我们在routes中又配置了一个映射.
path配置的是根路径: /
redirect是重定向, 也就是我们将根路径重定向到/home的路径下, 这样就可以得到我们想要的结果了.

如何改变Vue-router加载组件的方式?

我们前面说过改变路径的方式有两种:

  • URL的hash(浏览器URL中带#不好看)
  • HTML5的history
    默认情况下, 路径的改变使用的URL的hash.
如果希望使用HTML5的history模式, 非常简单, 在router.js进行如下配置即可:
router-link补充

在前面的<router-link>中, 我们只是使用了一个属性: to, 用于指定跳转的路径.
<router-link>还有一些其他属性:

  • tag: tag可以指定<router-link>之后渲染成什么组件, 比如上面的代码会被渲染成一个<li>元素, 而不是<a> <router-link to='/home' tag='li'>
  • replace: replace不会留下history记录, 所以指定replace的情况下, 后退键返回不能返回到上一个页面中<router-link to='/home' tag='li' replace>
  • active-class:<router-link>对应的路由匹配成功时, 会自动给当前渲染的标签元素设置一个router-link-activeclass, 在标签内设置active-class可以修改默认的名称router-link-active.
    • 在进行高亮显示的导航菜单或者底部tabbar时, 会使用到该类.
    • 但是通常不会修改类的属性, 会直接使用默认的router-link-active即可.
通过代码进行路由跳转

有时候, 页面的跳转可能需要执行对应的JavaScript代码, 这个时候, 就可以使用第二种跳转方式了
比如, 我们修改之前的router-link为button并绑定click,将代码修改如下:


当然如果我们不想用push这种可以返回的路由控制,我们也可以用this.$router.replace('/home')

相关文章

网友评论

      本文标题:Vue-Router

      本文链接:https://www.haomeiwen.com/subject/emjgzhtx.html