zoukankan      html  css  js  c++  java
  • Vue(六)--vue-router

    一、前端路由规则

    1.1、URL的hash

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

    image

    1.2、HTML5的history模式

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

    1)history.pushState()

    image

    2)history.replaceState()

    image

    3)history.go()

    image

    4)history.back()

    history.back() 等价于 history.go(-1)

    5)history.forward()

    history.forward() 则等价于 history.go(1)

    二、Vue-router

    2.1、初识vue-router

    vue-router是Vue.js官方的路由插件,它和vue.js是深度集成的,适合用于构建单页面应用

    官网:https://router.vuejs.org/zh/

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

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

    2.2、安装使用vue-router

    image

    1)创建router实例

    image

    2)挂载到Vue实例中

    image

    3)创建路由组件

    image

    4)配置组件和路径的映射关系

    image

    5)使用路由

    image

    注意

    <router-link>: 该标签是一个vue-router中已经内置的组件, 它会被渲染成一个<a>标签.
    <router-view>: 该标签会根据当前的路径, 动态渲染出不同的组件.
    网页的其他内容, 比如顶部的标题/导航, 或者底部的一些版权信息等会和<router-view>处于同一个等级.在路由切换时, 切换的是<router-view>挂载的组件, 其他内容不会发生改变.

    6)效果

    image

    2.3、路由的默认路径

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

    image

    2.4、HTML5的History模式

    默认情况下, 路径的改变使用的URL的hash,希望使用HTML5的history模式, 进行如下配置即可

    image

    image

    2.5、router-link补充

    router-link可以有如下属性:

    1)to, 用于指定跳转的路径

    <router-link to="/home">首页</router-link>
    <router-link to="/about">关于</router-link>

    2)tag: tag可以指定<router-link>之后渲染成什么组件, 比如上面的代码会被渲染成一个<li>元素, 而不是<a>

    <router-link to="/home" tag="button">首页</router-link>
    <router-link to="/about" tag="button">关于</router-link>

    image

    3)replace: replace不会留下history记录, 所以指定replace的情况下, 后退键返回不能返回到上一个页面中

    <router-link to="/home" tag="button" replace>首页</router-link>
    <router-link to="/about" tag="button" replace>关于</router-link>
    

    image

    4)active-class: 当<router-link>对应的路由匹配成功时, 会自动给当前元素设置一个router-link-active的class, 设置active-class可以修改默认的名称.

    在进行高亮显示的导航菜单或者底部tabbar时, 会使用到该类.
    但是通常不会修改类的属性, 会直接使用默认的router-link-active即可.

    image

    当设置active-class后:

    image

    image

    需求:当选中按钮时,显示红色

    image

    image

    2.6、修改linkActiveClass

    router-link-active具体的名称也可以通过router实例的属性进行修改

    image

    image

    2.7、路由代码跳转

    有时候, 页面的跳转可能需要执行对应的JavaScript代码

    image

    2.8、动态路由

    在某些情况下,一个页面的path路径可能是不确定的,比如我们进入用户界面时,希望是如下的路径:/user/aaaa或/user/bbbb,除了有前面的/user之外,后面还跟上了用户的ID

    1)创建组件

    image

    2)定义路由跳转

    image

    3)组件中使用

    image

    image

    4)效果

    image

    2.8、路由的懒加载

    1)认识路由的懒加载

    image

    2)路由懒加载的效果

    image

    image

    3)懒加载的方式

    image

    2.9、嵌套路由

    1)认识嵌套路由

    image

    2)定义两个子组件

    image

    3)定义路由规则

    image

    4)父组件中使用子组件

    image

    5)效果

    image

    2.10、传递参数

    1)准备工作

    1. 创建新的组件Profile.vue
    2. 配置路由映射
    3. 添加跳转的<router-link>

    image

    2)传递参数的方式

    image

    3)传递参数方式一: <router-link>

    image

    image

    image

    4)传递参数方式二: JavaScript代码

    image

    image

    2.11、$route和$router区别

    $router为VueRouter实例,想要导航到不同URL,则使用$router.push方法

    $route为当前router跳转对象里面可以获取name、path、query、params等

    image

    2.12、导航守卫

    1)为什么使用导航守卫?

    image

    2)导航守卫使用

    首先, 我们可以在钩子当中定义一些标题, 可以利用meta来定义,其次, 利用导航守卫,修改我们的标题.

    导航钩子的三个参数解析:

    • to: 即将要进入的目标的路由对象.
    • from: 当前导航即将要离开的路由对象.
    • next: 调用该方法后, 才能进入下一个钩子

    image

    image

    3)测试效果

    image

    4)补充

    补充一:如果是后置钩子, 也就是afterEach, 不需要主动调用next()函数.

    补充二: 上面我们使用的导航守卫, 被称之为全局守卫.

    • 路由独享的守卫.
    • 组件内的守卫.

    官网:

    https://router.vuejs.org/zh/guide/advanced/navigation-guards.html#%E8%B7%AF%E7%94%B1%E7%8B%AC%E4%BA%AB%E7%9A%84%E5%AE%88%E5%8D%AB

    2.13、keep-alive

    image

  • 相关阅读:
    干货—MySQL常见的面试题+索引原理分析!
    如何设计一个百万级的消息推送系统
    【金三银四跳槽季】Java工程师如何在1个月内做好面试准备?
    Nginx实现请求的负载均衡 + keepalived实现Nginx的高可用
    java函数式编程之Supplier
    SpringMVC + MyBatis + Mysql + Redis(作为二级缓存) 配置
    Redis创建集群报错
    阿里云服务器Tomcat无法从外部访问
    SSM框架学习之高并发秒杀业务--笔记5-- 并发优化
    在windows上部署使用Redis
  • 原文地址:https://www.cnblogs.com/hujinzhong/p/13627606.html
Copyright © 2011-2022 走看看