Auc的个人博客

vuePress-theme-reco Auc    2020 - 2021
Auc的个人博客 Auc的个人博客

选择一个主题吧~

  • 暗黑
  • 自动
  • 明亮
主页
分类
  • JavaScript
  • Vue
  • 数据结构与算法
  • 文档
  • 面试题
  • 笔记
标签
笔记
  • CSS
  • ES6
  • JavaScript
  • Vue
  • C语言
文档
  • Vueのapi
  • Vue Router
  • axios
  • Vue CLI
面试
  • JS
  • Vue
  • 基础
时间线
联系我
  • GitHub (opens new window)
author-avatar

Auc

62

文章

11

标签

主页
分类
  • JavaScript
  • Vue
  • 数据结构与算法
  • 文档
  • 面试题
  • 笔记
标签
笔记
  • CSS
  • ES6
  • JavaScript
  • Vue
  • C语言
文档
  • Vueのapi
  • Vue Router
  • axios
  • Vue CLI
面试
  • JS
  • Vue
  • 基础
时间线
联系我
  • GitHub (opens new window)
  • Vue-Router

    • 初识Vue Router
    • 动态路由
    • 嵌套路由
    • vue-router 的 api

初识Vue Router

vuePress-theme-reco Auc    2020 - 2021

初识Vue Router

Auc 2019-06-02 VueVue插件

# 初始Vue Router

# hash

首先见一段URL

# 安装

yarn add vue-router

# 使用路由

建立第一个单页面应用程序。

# HTML部分

每个路由都必须有出口,使用标签 <router-view></router-view>,路由映射到的组件将在出口处显示

  <div id="app">
    <h2>My first SPA</h2>
    <!-- 1. 路由出口 -->
    <!-- 路由匹配到的组件将在此处渲染 -->
    <router-view class="routerStyle"></router-view>
  </div>
1
2
3
4
5
6

# JS部分

  • 引入 vue-router 组件。
  • 使用 VueRouter() 构造函数创建路由实例。
  • 在实例 routes 选项中配置路由,类型是一个数组,多项配置,内部嵌套对象。
  • 在组件上挂载创建的路由。
    const Home = {
      template: `
      <div>
        <div>这是首页</div>
        <button @click="alertMsg">点击弹窗</button>
      </div>
      `,
      methods: {
        alertMsg() {
          alert(location.hash);
        }
      }
    }
    //2. 创建router实例
    // 使用VueRouter构造函数
    const router = new VueRouter({
      //3. 配置路由的参数
      //指定路由映射规则
      routes: [
        //每个路由映射一个组件
        { path: '/home', component: Home },
        { path: '/login', component: { template: `<div>这是登录页</div>` } }
      ]
    });

    //4. 在根组件上挂载路由实例
    const vm = new Vue({
      el: '#app',
      data: {
        msg: 'hello vue'
      },
      //挂载路由
      router
    })
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

# 优化该单页面应用程序

上面的路由跳转只能在地址栏输入不同的路由路径来跳转,业内大多数面向用户的网页都是点击跳转。

使用<router-link></router-link>标签

  • 该标签属性to:指定路由path。<router-link to="/home"></router-link>
  • 该标签在渲染时会被渲染成一个a标签。
  • 该标签拥有独特的CSS样式,用来控制当前路由高亮。
    • .router-link-active 模糊匹配:to 属性的值,只要在地址栏的hash值包含即可, 就会匹配, 加上对应级联样式。
    • .router-link-exact-active 精确匹配:to 属性的值,hash值必须与之相同,才加上对应的级联样式。

所以HTML结构可以:

  <div id="app">
    <h2>My first SPA</h2>
    <p>
      <router-link to="/home">首页</router-link><br />
      <router-link to="login">登录页</router-link>
    </p>
    <router-view class="routerStyle"></router-view>
  </div>
1
2
3
4
5
6
7
8

CSS样式

    /* 精确匹配 */
    .router-link-exact-active {
      color: red;
    }

    /* 模糊匹配
    .router-link-active {
      color: red;
    } */
1
2
3
4
5
6
7
8
9

展示图