Vue —— 进阶 vue-router 路由(零)(路由的概念、基本使用)

简介: Vue —— 进阶 vue-router 路由(零)(路由的概念、基本使用)

一、相关理解

1. vue-router 是什么?

vue-router 是 vue 的一个插件库,专门用来实现 SPA 应用。

2. SPA 是什么?
  1. 单页 Web 应用(single page web application,SPA)。
  2. 整个应用只有一个完整的页面。
  3. 点击页面中的导航链接不会刷新页面,只会做页面的局部更新。
  4. 数据需要通过 ajax 请求获取。
3. 路由的理解
  1. 什么是路由?
  1. 一个路由就是一组映射关系(key-value)。
  2. key 为路径,value 可能是 function 或 component。

路由的分类

后端路由:

(1)理解:value 是 function,用于处理客户端提交的请求。

(2)工作过程:服务器收到一个请求时,根据请求路径找到匹配的函数来处理请求,返回响应数据。

前端路由:

(1)理解:value 是 component,用于展示页面内容。

(2)工作过程:当浏览器的路径改变时,对应的组件就会展示。

二、路由的基本使用

1. 安装 vue-router

在终端键入:npm i vue-router@3

对应的是 vue2.x 版本

2. 应用插件

Vue.use(VueRouter)

3. 编写 router 配置项
  // 该文件专门用于创建整个应用的路由器
  import VueRouter from "vue-router";
  // 引入组件
  import About from '../components/About.vue'
  import Home from '../components/Home.vue'
  // 创建并暴露一个路由器
  export default new VueRouter({
    routes: [
      {
        path: '/about',
        component: About
      },
      {
        path: '/home',
        component: Home
      },
    ]
  })
4. 实现切换(active-class可配置高亮样式)

active-class 是 vue-router 模块的 router-link 组件中的属性,用来做选中样式的切换

点击哪个导航栏哪个导航栏高亮

  <router-link active-class="active" to="/about">About</router-link>
  <router-link active-class="active" to="/about">Home</router-link>
5. 指定展示位置

指定在页面中展示的位置

  <router-view></router-view>

三、实例:路由的基本使用

点击导航栏,切换显示的内容,并且页面不刷新,地址栏地址更改。

https://www.bilibili.com/video/BV1Vt4y1s77g?t=1.7

路由基础

main.js

  1. 首先在 main.js 中引入路由(vue-route)和路由器(router)并配置
  // 引入 Vue
  import Vue from 'vue'
  // 引入 App
  import App from './App.vue'
  // 引入 VueRouter
  import VueRouter from 'vue-router'
  // 引入路由器
  import router from './router'
  // 关闭 vue 的生产提示
  Vue.config.production = false
  // 应用组件
  Vue.use(VueRouter)
  //创建 vm
  new Vue({
      el:'#app',
      render: h => h(App),
      router: router
  })

./router/index.js


在 router 文件夹下的 index.js 文件中引入事先定义好的组件

通过 new VueRouter 创建一个路由器

路由器里面来配置路由:routes: [{...}]

路径:path: '/xxx',用于和 to='/xxx' 匹配,如果不匹配,则内容不呈现。

组件:component: 组件名,路径映射到的组件

  // 该文件专门用于创建整个应用的路由器
  import VueRouter from "vue-router";
  // 引入组件
  import About from '../components/About.vue'
  import Home from '../components/Home.vue'
  // 创建并暴露一个路由器
  export default new VueRouter({
    routes: [
      {
        path: '/about',
        component: About
      },
      {
        path: '/home',
        component: Home
      },
    ]
  })

Home.vue

  1. Home 组件,配置呈现的内容
  <template>
    <h2>我是Home的内容</h2>
  </template>
  <script>
  export default {
    name: "myHome",
  };
  </script>

About.vue

  1. About 组件,配置呈现的内容
  <template>
    <h2>我是About的内容</h2>
  </template>
  <script>
  export default {
    name: "myAbout",
  };
  </script>

App.vue

  1. 标签不写 <a>,而是 <router-link>
  2. 属性不写 href,而是 to
  3. 地址不写 ./xxx.html,而是 /xxx,呈现在地址栏中。用于和 path: '/xxx' 匹配,如果不匹配,则内容不呈现。
  4. 指定呈现位置用标签 <router-view>
  <template>
    <div>
      <div class="row">
        <div class="col-xs-offset-2 col-xs-8">
          <div class="page-header"><h2>Vue Router Demo</h2></div>
        </div>
      </div>
      <div class="row">
        <div class="col-xs-2 col-xs-offset-2">
          <div class="list-group">
            <!-- 原始html中我们使用a标签实现页面的跳转 -->
            <!-- <a class="list-group-item active" href="./about.html">About</a> -->
            <!-- <a class="list-group-item" href="./home.html">Home</a> -->
            <!-- Vue中借助router-link标签实现路由的切换 -->
            <router-link class="list-group-item" active-class="active" to="/about">About</router-link>
            <router-link class="list-group-item" active-class="active" to="/home">Home</router-link>
          </div>
        </div>
        <div class="col-xs-6">
          <div class="panel">
            <div class="panel-body">
              <!-- 指定组件的呈现位置 -->
              <router-view></router-view>
            </div>
          </div>
        </div>
      </div>
    </div>
  </template>
  <script>
  export default {
    name: "App",
    components: { },
    mounted() {
      console.log(this);
    },
  };
  </script>

四、几个注意点

  1. 路由组件通常放在 pages 文件夹,一般组件通常放在 components 文件夹。
  2. 090692b5205c4d939d16d4636f4baa19.png
  3. 通过切换,隐藏了的路由组件,默认是被 销毁 的,需要的时候再去挂载。
  4. 每个组件都有自己的 $route 属性,里面存储着自己的路由信息。
  5. 整个应用只有一个 router,可以通过组件的 $router 属性获取到。
  6. 不积跬步无以至千里 不积小流无以成江海
相关文章
|
8月前
|
资源调度 JavaScript 前端开发
路由管理:Vue Router的使用和配置技巧
【10月更文挑战第21天】路由管理:Vue Router的使用和配置技巧
196 3
|
8月前
|
JavaScript API
vue 批量自动引入并注册组件或路由等等
【10月更文挑战第12天】 vue 批量自动引入并注册组件或路由等等
|
7月前
|
JavaScript UED
"Vue实战技巧大揭秘:一招解决路由跳转页面不回顶部难题,让你的单页面应用用户体验飙升!"
【10月更文挑战第23天】在Vue单页面应用中,点击路由跳转时,默认情况下页面不会自动滚动到顶部,这可能影响用户体验。本文通过一个新闻网站的案例,介绍了如何使用Vue-router的全局前置守卫和`scrollBehavior`方法,实现路由跳转时页面自动滚动到顶部的功能,提升用户浏览体验。
309 0
|
8月前
|
JavaScript API
Vue中使用require.context()自动引入组件和自动生成路由的方法介绍
Vue中使用require.context()自动引入组件和自动生成路由的方法介绍
325 0
|
JavaScript Go
|
JavaScript C语言 Go
|
2月前
|
JavaScript
vue实现任务周期cron表达式选择组件
vue实现任务周期cron表达式选择组件
283 4
|
19天前
|
JavaScript 前端开发 开发者
Vue 自定义进度条组件封装及使用方法详解
这是一篇关于自定义进度条组件的使用指南和开发文档。文章详细介绍了如何在Vue项目中引入、注册并使用该组件,包括基础与高级示例。组件支持分段配置(如颜色、文本)、动画效果及超出进度提示等功能。同时提供了完整的代码实现,支持全局注册,并提出了优化建议,如主题支持、响应式设计等,帮助开发者更灵活地集成和定制进度条组件。资源链接已提供,适合前端开发者参考学习。
111 17
|
24天前
|
JavaScript 数据可视化 前端开发
基于 Vue 与 D3 的可拖拽拓扑图技术方案及应用案例解析
本文介绍了基于Vue和D3实现可拖拽拓扑图的技术方案与应用实例。通过Vue构建用户界面和交互逻辑,结合D3强大的数据可视化能力,实现了力导向布局、节点拖拽、交互事件等功能。文章详细讲解了数据模型设计、拖拽功能实现、组件封装及高级扩展(如节点类型定制、连接样式优化等),并提供了性能优化方案以应对大数据量场景。最终,展示了基础网络拓扑、实时更新拓扑等应用实例,为开发者提供了一套完整的实现思路和实践经验。
113 21
|
22天前
|
监控 JavaScript 前端开发
Vue 文件批量下载组件封装完整使用方法及优化方案解析
本文详细介绍了批量下载功能的技术实现与组件封装方案。主要包括两种实现方式:**前端打包方案(基于file-saver和jszip)** 和 **后端打包方案**。前者通过前端直接将文件打包为ZIP下载,适合小文件场景;后者由后端生成ZIP文件流返回,适用于大文件或大量文件下载。同时,提供了可复用的Vue组件`BatchDownload`,支持进度条、失败提示等功能。此外,还扩展了下载进度监控和断点续传等高级功能,并针对跨域、性能优化及用户体验改进提出了建议。可根据实际需求选择合适方案并快速集成到项目中。
115 17