Vue 路由指南:畅游单页应用的地图(Vue Router 和 <router-view>)

news2024/11/16 23:41:57

在这里插入图片描述

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6
🍨 阿珊和她的猫_CSDN个人主页
🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》
🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入门到实战全面掌握 uni-app》

文章目录

  • I. 介绍
    • 理解单页应用程序(SPA)的概念和优势
    • Vue Router 和 `<router-view>` 的作用
  • II. 基本使用
    • 安装和配置 Vue Router
    • 创建路由和定义路由表
    • 在模板中使用 `<router-view>` 来展示匹配的组件

I. 介绍

理解单页应用程序(SPA)的概念和优势

当涉及到Web应用程序时,有两种主要类型:多页应用程序(MPA)和单页应用程序(SPA)。

多页应用程序是传统的Web应用程序形式,每次用户与应用程序交互时,都会从服务器加载一个新的页面。每个页面都是一个完整的HTML文档,包含自己的样式、脚本和内容。用户导航到不同的页面时,整个页面都会重新加载。

相比之下,单页应用程序是在一个页面上构建的应用程序,用户与应用程序交互时,页面不会重新加载。相反,只有应用程序需要的数据和资源会通过异步请求从服务器获取。用户导航切换时,只会动态更新页面的特定部分,其他页面元素保持不变。

单页应用程序的优势包括:

  1. 更快的交互体验
  2. 减少服务器负载
  3. 更好的代码组织和维护
  4. 跨平台能力
  5. 支持离线访问

在这里插入图片描述

总之,单页应用程序通过提供更快的交互体验、减少服务器负载、更好的代码组织和维护、跨平台能力以及离线访问支持等方面,为现代Web应用程序带来了许多优势。作为开发人员,理解SPA的概念和优势可以帮助你做出更好的技术选择和设计决策。

Vue Router 和 <router-view> 的作用

Vue Router 是 Vue.js 官方提供的路由管理器,用于构建单页应用程序(SPA)。它与 Vue.js 框架紧密集成,为应用程序提供了导航和路由功能。

Vue Router 的主要作用是实现应用程序的页面导航和组件路由。它通过基于 URL 的导航来管理不同的视图和组件的展示,并且可以根据用户的交互动作动态更新页面内容。

具体来说,以下是 Vue Router 的主要作用:

  1. 路由映射:Vue Router 允许你在应用程序中定义路由表,将 URL 路径映射到对应的组件。通过路由配置,你可以定义每个 URL 对应的组件展示,并在页面导航时自动加载和渲染相应的组件。

  2. 嵌套路由:Vue Router 支持嵌套路由,使你可以在应用程序中创建层次化的页面结构。通过嵌套路由,你可以在父级路由的组件中使用 <router-view>,从而在同一个页面中展示多个子级路由的内容。

  3. 路由传参:Vue Router 允许你在路由之间传递参数,包括路径参数、查询参数或状态参数。这使得你可以在不同的页面之间传递数据,以便定制化页面展示和功能。

  4. 导航守卫:Vue Router 提供导航守卫功能,允许你在路由切换前后执行逻辑。你可以使用导航守卫来控制路由的访问权限、处理用户授权和验证等操作,以及在路由切换时执行一些额外的异步操作。

  5. 命名视图:Vue Router 支持命名视图,允许在同一个父级路由中使用多个 <router-view> 来展示不同的命名视图。这使得你可以在同一个页面中同时展示不同的组件,实现更灵活的布局和复杂的页面结构。

<router-view> 是 Vue Router 提供的关键组件之一,它的作用是在 Vue 组件中占位,用于渲染匹配的路由组件。当 URL 发生变化时,Vue Router 会根据路由配置找到匹配的组件,并将其渲染到 <router-view> 中显示。

总的来说,Vue Router 在 Vue.js 单页应用程序中提供了强大的路由管理功能,包括路由映射、嵌套路由、路由传参、导航守卫和命名视图等,而 <router-view> 则是用于在组件中呈现不同路由组件的占位符。这些功能使得构建复杂的页面导航和组件路由变得更加简单和高效。

II. 基本使用

安装和配置 Vue Router

要安装和配置 Vue Router,你可以按照以下步骤进行操作:

  1. 安装 Vue Router:在终端中使用 npm 或 yarn 安装 Vue Router。你需要在 Vue 项目的根目录下执行以下命令:

    npm install vue-router
    # 或者
    yarn add vue-router
    
  2. 创建路由配置:在你的项目中创建一个新的文件,通常命名为 router.jsrouter/index.js,作为路由配置文件。

    // router.js 或 router/index.js
    
    import Vue from 'vue';
    import VueRouter from 'vue-router';
    
    // 导入你的组件
    import Home from './views/Home.vue';
    import About from './views/About.vue';
    
    Vue.use(VueRouter);
    
    const routes = [
      {
        path: '/',
        name: 'home',
        component: Home
      },
      {
        path: '/about',
        name: 'about',
        component: About
      }
    ];
    
    const router = new VueRouter({
      mode: 'history', // 可以选择 'hash' 或 'history' 模式
      routes
    });
    
    export default router;
    

    上述代码示例中,我们首先导入 Vue 和 VueRouter,并使用 Vue.use() 安装 Vue Router 插件。然后,我们定义了路由表 routes,其中每个路由对象包含 path(路径)、name(名称)和 component(组件)字段。最后,我们创建了一个新的 VueRouter 实例,配置了路由模式(可以选择 hashhistory 模式)和路由表,最后导出这个实例。

  3. 在主入口文件中使用路由配置:找到你的主入口文件(通常是 main.js),并导入和使用路由配置文件。

    // main.js
    
    import Vue from 'vue';
    import App from './App.vue';
    import router from './router';
    
    new Vue({
      router,
      render: h => h(App)
    }).$mount('#app');
    

    上述代码示例中,我们导入了之前创建的路由配置文件,并将其传递给 Vue 实例的 router 选项。这样,在应用程序中就可以使用 Vue Router 来管理导航和路由。

  4. 在组件中使用 <router-view>:找到需要展示路由组件的组件模板,在合适的位置添加 <router-view> 组件。

    <!-- App.vue 或其他组件模板 -->
    
    <template>
      <div id="app">
        <!-- 其他组件内容 -->
        <router-view></router-view>
      </div>
    </template>
    

    <router-view> 组件将用来动态渲染匹配的路由组件,并显示在该位置。

  5. 添加导航链接:在需要的地方添加 <router-link> 组件来创建导航链接。

    <!-- Header.vue 或其他组件模板 -->
    
    <template>
      <header>
        <nav>
          <router-link to="/">Home</router-link>
          <router-link to="/about">About</router-link>
        </nav>
      </header>
    </template>
    

    <router-link> 组件用于渲染一个 <a> 标签,它会根据配置的 to 属性生成正确的链接,实现路由之间的导航。

  6. 运行应用程序:完成上述步骤后,你就可以运行你的 Vue 应用程序,并使用 Vue Router 来实现页面导航和路由的功能了。

以上是安装和配置 Vue Router 的基本步骤。你可以根据你的项目需求和路由配置进行调整和扩展。详细的 Vue Router 文档可以提供更多配置和功能选项的信息,你可以参考官方文档:Vue Router。

创建路由和定义路由表

要创建路由和定义路由表,你可以按照以下步骤进行操作:

  1. 在你的 Vue 项目中创建一个新的文件,通常命名为 router.jsrouter/index.js,作为路由配置文件。

  2. 导入 Vue、VueRouter,并使用 Vue.use(VueRouter) 安装 Vue Router 插件。确保你已经在项目中安装了 Vue Router。

    // router.js 或 router/index.js
    
    import Vue from 'vue';
    import VueRouter from 'vue-router';
    
    Vue.use(VueRouter);
    
  3. 导入你的组件。根据你的项目结构和需求,将需要用于路由的组件导入到路由配置文件中。

    // router.js 或 router/index.js
    
    import Home from './views/Home.vue';
    import About from './views/About.vue';
    
  4. 定义路由表 routes。在 routes 数组中,每个路由对象包含 path(路径)、name(名称)和 component(组件)字段。

    // router.js 或 router/index.js
    
    const routes = [
      {
        path: '/',
        name: 'home',
        component: Home
      },
      {
        path: '/about',
        name: 'about',
        component: About
      }
    ];
    

    在上述示例中,我们定义了两个路由:一个是根路径 / 对应的 Home 组件,另一个是 /about 路径对应的 About 组件。你可以根据你的项目需要定义更多的路由。

  5. 创建一个新的 VueRouter 实例,并将路由表传递给它。你还可以选择路由的模式,可以是 ‘hash’ 模式或 ‘history’ 模式。

    // router.js 或 router/index.js
    
    const router = new VueRouter({
      mode: 'history',
      routes
    });
    

    在这个例子中,我们使用了 ‘history’ 模式,它可以去除 URL 中的 ‘#’ 符号,使 URL 更加友好和语义化。

  6. 导出创建的路由实例,以便在主入口文件中使用。

    // router.js 或 router/index.js
    
    export default router;
    

完成以上步骤后,你已经完成了创建路由和定义路由表的过程。你可以根据项目需要添加、修改或删除路由,以及为每个路由指定对应的组件。记得在主入口文件中将路由实例导入并使用,以便在应用程序中启用路由功能。

在你的 Vue 组件中,你可以通过 <router-view> 组件来渲染匹配的路由组件,并使用 <router-link> 组件来创建导航链接。例如,在你的 App.vue 组件中使用 <router-view> 组件:

<!-- App.vue 或其他组件模板 -->

<template>
  <div id="app">
    <!-- 其他组件内容 -->
    <router-view></router-view>
  </div>
</template>

这样,根据当前的路由路径,Vue Router 将会将匹配的路由组件渲染到 <router-view> 中进行显示。

你可以根据需要自定义更多的路由配置,例如添加嵌套路由、路由传参和导航守卫等。Vue Router 的文档提供了更详细的配置和功能说明,你可以参考官方文档:Vue Router。

在模板中使用 <router-view> 来展示匹配的组件

在模板中使用 <router-view> 来展示匹配的组件非常简单。只需在你的模板中插入 <router-view> 标签即可。

假设你已经按照之前的步骤创建了路由和定义了路由表,现在让我来说明在模板中如何使用 <router-view>

<!-- App.vue 或其他组件模板 -->

<template>
  <div id="app">
    <!-- 其他组件内容 -->
    <router-view></router-view>
  </div>
</template>

在上面的代码中,我们在模板中插入了 <router-view> 标签。当使用 Vue Router 导航到匹配的路由时,对应路由的组件将会被渲染并显示在 <router-view> 的位置上。

比如,在路由表中定义了 /home 路由对应的组件为 Home,当你访问 /home 路径时,Home 组件将会被渲染并显示在 <router-view> 中。

随着你的路由匹配不同路径时,<router-view> 中的内容会根据当前的路由动态更新,显示对应的组件内容。

需要注意的是,<router-view> 是一个路由视图的插槽,它负责渲染匹配的组件,因此只需要在模板中定义一个即可。你可以根据应用的需要将其放置在合适的位置。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1150936.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32F407的系统定时器

文章目录 系统定时器SysTick滴答定时器寄存器STK_CTRL 控制寄存器STK_LOAD 重载寄存器STK_VAL 当前值寄存器STK_CALRB 校准值寄存器 初始化 Systick 定时器SysTick_InitSysTick_CLKSourceConfig delay_us寄存器delay_us库函数delay_xms短时delay_ms长时SysTick_Config 系统定时…

电阻距离------Resistance distance

原来的解释来自维基百科&#xff1a;https://en.wikipedia.org/wiki/Resistance_distance 在图论中&#xff0c;简单连通图G的两个顶点之间的电阻距离等于电网上两个等效点之间的电阻&#xff0c;电网被构造为与G相对应&#xff0c;每条边被一欧姆的电阻代替。它是图上的度量。…

Jenkins安装(Jenkins 2.429)及安装失败解决(Jenkins 2.222.4)

敏捷开发与持续集成 敏捷开发 敏捷开发以用户的需求进化为核心&#xff0c;采用迭代、循序渐进的方法进行软件开发。在敏捷开发中&#xff0c;软件项目在构建初期被切分成多个子项目&#xff0c;各个子项目的成果都经过测试&#xff0c;具备可视、可集成和可运行使用的特征。…

geatpy-遗传算法

参考: geatpy 官网 关注的点 在实操过程中,主要遇到以下问题: 不等式约束代码里怎么写?几种书写方式之间有何细节差别要注意入门案例一 包含不等式约束 import geatpy as ea import numpy as np# 构建问题 r = 1 # 目标函数需要用到的额外数据 @ea.Problem.single def …

黑豹程序员-架构师学习路线图-百科:PowerDesigner数据库建模的行业标准

PowerDesigner最初由Xiao-Yun Wang&#xff08;王晓昀&#xff09;在SDP Technologies公司开发完成。 目前PowerDesigner是Sybase的企业建模和设计解决方案&#xff0c;采用模型驱动方法&#xff0c;将业务与IT结合起来&#xff0c;可帮助部署有效的企业体系架构&#xff0c;并…

公众号推送消息自动化的简单方法

作为公众号运营者&#xff0c;你是否厌烦了每天都要手动推送内容给用户&#xff1f;现在&#xff0c;有了乔拓云公众号助手工具&#xff0c;你可以告别手动推送的繁琐&#xff0c;实现公众号的自动推送功能。下面&#xff0c;我们来看看如何操作。 第一步&#xff1a;注册并登录…

ThreadLocal 会出现内存泄漏吗?

ThreadLocal ThreadLocal 是一个用来解决线程安全性问题的工具。它相当于让每个线程都开辟一块内存空间&#xff0c;用来存储共享变量的副本。然后每个线程只需要访问和操作自己的共享变量副本即可&#xff0c;从而避免多线程竞争同一个共享资源。它的工作原理很简单&#xff0…

k8s中label标签、deployment控制器、service、ipvs管理简介

目录 一.label管理 1.label的作用和特点 2.标签的查询和筛选 &#xff08;1&#xff09;等式型 &#xff08;2&#xff09;集合型 3.命令行打标签用法示例 &#xff08;1&#xff09;为资源对象添加多个标签 &#xff08;2&#xff09;更该原有标签 &#xff08;3&…

Tomcat安装与配置文件解读

简介 Tomcat是Apache软件基金会&#xff08;Apache Software Foundation&#xff09;项目中的一个核心项目&#xff0c;由Apache、Sun和其他一些公司及个人共同开发而成。 Tomcat服务器是一个免费的开放源代码的Web应用服务器&#xff0c;属于轻量级应用服务器&#xff0c;在…

什么是神经网络,它的原理是啥?(1)

参考&#xff1a;https://www.youtube.com/watch?vmlk0rddP3L4&listPLuhqtP7jdD8CftMk831qdE8BlIteSaNzD 视频1&#xff1a; 简单介绍神经网络的基本概念&#xff0c;以及一个训练好的神经网络是怎么使用的 分类算法中&#xff0c;神经网络在训练过程中会学习输入的 pat…

通过arthas vmtool 调用线上正在运行的service方法

通过arthas vmtool 调用线上正在运行的service方法 场景 场景具体描述业务上有某个缓存需要删除&#xff0c;但是没有写删除 key 的远程接口通过arthas执行 service 方法&#xff0c;删除缓存 key 1.前期准备 1.1下载arthas 官网地址 https://arthas.gitee.io/doc/quick-…

修改el-date-picker宽度

<div style"width: 100%"><el-date-pickerstyle"width:100%"v-model"value"type"datetimerange"start-placeholder"开始日期"end-placeholder"结束日期":default-time"[12:00:00]"value-forma…

编程实例:操作简单的台球计时计费软件推荐,可以连接灯控硬件设备以及灯控器布线图编程

编程实例&#xff1a;操作简单的台球计时计费软件推荐&#xff0c;可以连接灯控硬件设备以及灯控器布线图编程 1、计时计费功能 &#xff1a;开台时间和所用的时长直观显示&#xff0c;每3秒即可刷新一次时间。 2、销售商品功能 &#xff1a;商品可以绑定桌子最后一起结账&…

同城门户同城分类信息网站源码discuz插件+pc端+小程序端+49款插件

同城分类信息 同城好店 同城合伙人 同城招聘 同城卡 同城活动 同城优惠抢购 同城商城 同城头条 同城抽奖 同城拼团 同城砍价 同城电话本 同城认证 同城签到 同城拼车 同城红包 同城子站点 同城相亲 同城交友 同城小程序 代码逻辑清晰,文件规划统一明了&#xff0c;非常不错的&…

网络工程综合试题(二)

1. SR技术有哪些缺点&#xff1f; SR&#xff08;Segment Routing&#xff09;技术是一种新兴的网络编程技术&#xff0c;它具有很多优点&#xff0c;但也存在一些缺点&#xff0c;包括&#xff1a; 部署复杂性&#xff1a;SR技术需要对网络进行改造和升级&#xff0c;包括更新…

LeetCode 275. H 指数 II

原题链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 题目描述 给你一个整数数组 citations &#xff0c;其中 citations[i] 表示研究者的第 i 篇论文被引用的次数&#xff0c;citations 已经按照 升序排列 。计算并返回该研究者的 h…

Java学习 6.循环习题

1.根据年龄&#xff0c;打印出当前年龄段的人是少年&#xff08;低于18&#xff09;&#xff0c;青年&#xff08;19-28&#xff09;&#xff0c;中年&#xff08;29-55&#xff09;&#xff0c;老年&#xff08;55以上&#xff09;。 代码实现 public static void main(Strin…

爬取某信息化服务平台登录页面验证码

网站链接&#xff1a;https://login.cdpf.org.cn/uams/person.html 鼠标放到验证码上&#xff0c;右键“检查” 提取URL 爬虫代码&#xff1a; import requests # 导入base64库&#xff0c;用于对数据进行Base64编码和解码 import base64 # 从io模块导入BytesIO&#xff0c;它…

手把手教你根据接口文档,轻松开发 get 和 post 请求的脚本

前言 一般的接口文档描述的内容&#xff1a; 开发get请求的脚本&#xff0c;接口文档的描述如下&#xff1a; 在loadrunner里面创建一个空脚本&#xff1a; 在action空白处&#xff0c;点击insert—>step 输入web_custom_request&#xff0c;双击选择该函数&#xff0c;填入…

【如何写论文】硕博学位论文的结构框架、过程与大纲分析

硕士论文可以说是毕业前最重要的一部分&#xff0c;也可以说是展示和检验你3年研究生学习的成果的一个考试。硕士论文答辩和检验合格&#xff0c;才能够顺利拿到毕业生和学位证&#xff0c;可见其重要性。 目录 一、基础框架1.1、摘要&#xff08;Abstract&#xff09;1.2、绪论…