Vue2的前端路由(vue-router)

news2024/11/27 9:49:10

一、路由

        路由 (英文:router)就是页面地址与组件之间的对应关系

二、路由方式

        服务器端路由、前端路由

三、前端路由

       前端路由:地址和组件之间的对应关系,即由前端来维护一组路由规则(地址和组件之间的对应关系),实现模式有两种:

        1. 利用URL的hash模式: 就是常说的锚点,JavaScript通过hashChange事件来监听URL的改变。在地址前带有#

        2. 利用HTML5的History模式:由Html5使用,地址前不带#,地址之间用“/”分隔。它使用URL看起来像普通网站一样,这种模式需要服务器端支持,服务端在接收到所有的请求后,都指向同一个HTML文件,不然会出现页面错误

四、SPA:单页面应用(Single Page Application)

​        一个Web网站只有一个html页面,所有组件的切换都在一个页面中完成。组件之间的切换是通过前端路由来实现的

​        结论:在SPA 项目中,不同功能之间的切换,要依赖于前端路由来完成!

五、前端路由的工作方式

        1. 用户点击页面中的路由链接

        2. URL的hash地址就会发生改变

        3. 前端路由监听到了URL的改变

        4. 前端路由会查找路由表,将hash地址对应的组件渲染到浏览器中

六、vue-router路由模块

        vue-router路由模块是由vue.js官方给出的前端路由模块,只能和vue项目结合,方便SPA项目实现组件之间的切换

        1. vue-router的版本

​ (1)vue2中使用vue-router3:npm install vue-router@3

​ (2)vue3中使用vue-router4

        2. vue-router的组成部分

​ (1)VueRouter:路由器类(路由器组件),用来维护路由表(URL地址与组件的映射)​,根据路由请求在路由视图中动态渲染选中的组件

​ (2)router-link:路由链接组件,本质就是标签,声明用以提交路由请求的用户接口 ​

​ (3)router-view:路由视图组件(路由出口),主要负责动态染路由选中的组件

 七、示例

        1. 创建三个组件:Home、Movie、About

        2. 在src下创建router/index.js:创建路由器实例

//1.导入Vue 和VueRouter
import Vue from 'vue'
import VueRouter from 'vue-router'

//2.在Vue中注册VueRouter
Vue.use(VueRouter)

//3.创建路由器(VueRouter)的实例
const router = new VueRouter()

//4.导出路由器对象
export default router

        3. 在src/main.js入口文件中挂载路由器

import Vue from 'vue'
import App from './App.vue'
import router from "@/router";

Vue.config.productionTip = false

new Vue({
  router,  //在Vue中挂载路由器
  render: function (h) { return h(App) },
}).$mount('#app')

        4. 在App.vue中声明路由链接: <router-link></router-link>和渲染组件的<router-view>

<template>
  <div id="app">
    <img alt="Vue logo" src="./assets/logo.png">
    <router-link to="/home">首页</router-link>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <router-link to="/movie">电影</router-link>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <router-link to="/about">关于</router-link>
    <hr/>
    <router-view></router-view>
  </div>
</template>

        5. 声明路由的匹配规则:在 src/router/index.js 路由模块中,通过 routes 数组声明路由的匹配规则。

//3.创建路由器(VueRouter)的实例
const router = new VueRouter({
    //3.1定义路由表routes:包含若干对象,每个对象实现了链接地址和组件之间的映射
    routes:[
        {
            path:'/home',
            component:()=> import('../components/Home')
        },
        {
            path:'/movie',
            component:()=> import('../components/Movie')
        },
        {
            path:'/about',
            component:()=> import('../components/About')
        }
    ],
    //3.2设置路由模式
    mode:"history",
})

八、vue-router中常用的方法

        1. 路由重定向:使用redirect 属性,用户在访问地址A时,强制用户跳转到地址C

//3.创建路由器(VueRouter)的实例
const router = new VueRouter({
    //3.1定义路由表routes:包含若干对象,每个对象实现了链接地址和组件之间的映射
    routes:[
        {
          path:'/',  //表示项目的根目录
          redirect:'/home'
        },
        {
            path:'/home',
            component:()=> import('../components/Home')
        }
    ],
    //3.2设置路由模式
    mode:"history",
})

        2. 嵌套路由:在组件中嵌套显示组件(通过路由实现组件的嵌套显示)

         (1)创建两个组件:Tab1、Tab2

​         (2)声明子路由链接和子路由占位符:在 About.vue 组件中,声明tab1 和 tab2 的子路由链接以及子路由占位符。

<template>
  <div>
    <h2>
      我是About组件
    </h2>
    <router-link to="/about/tab1">tab1</router-link>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <router-link to="/about/tab2">tab2</router-link>
    <hr width="500" color="red"/>
    <router-view></router-view>
  </div>
</template>

​         (3)通过 children 属性声明子路由规则:在 src/router/index.js 路由模块中,导入需要的组件,并使用 children 属性声明子路由规则

//3.创建路由器(VueRouter)的实例
const router = new VueRouter({
    //3.1定义路由表routes:包含若干对象,每个对象实现了链接地址和组件之间的映射
    routes:[
        {
            path:'/about',
            component:()=> import('../components/About'),
            children:[  //子路由表
                {
                    path:'tab1',
                    component:()=> import('../components/Tab1')
                },
                {
                    path:'tab2',
                    component:()=> import('../components/Tab2')
                }
            ]
        }
    ]
})

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

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

相关文章

xlsx.utils.sheet_to_json的{ header: 1 }起的作用,header属性的研究

XLSX.utils.sheet_to_json 是为了把excel里面的数据解析出来&#xff0c;这是它的定义&#xff1a; 其中&#xff0c;worksheet表示特定表名的工作表&#xff0c;opts属于可要可不要的参数。 opts也有几种类型&#xff1a; export interface Sheet2JSONOpts extends DateNFOp…

selinux 控制

在某些Linux发行版上&#xff0c;默认情况下启用SELinux&#xff0c;如果不了解SELinux的工作原理以及如何配置它的基本详细信息&#xff0c;则可能会导致一些不必要的问题。一般强烈建议了解了SELinux 之后再去实现它。但是&#xff0c;在了解 SELinux 的实现细节之前&#xf…

由浅入深,详解ViewModel的那些事

Hi&#xff0c;你好 &#x1f603; 引言 关于 ViewModel &#xff0c;Android 开发的小伙伴应该都非常熟悉&#xff0c;无论是新项目还是老项目&#xff0c;基本都会使用到。而 ViewModel 作为 JetPack 核心组件&#xff0c;其本身也更是承担着不可或缺的作用。 因此&#x…

STL list 模拟实现

list 概述 相比于 vector 的连续线性空间&#xff0c;list 采用的是零散的空间&#xff0c;它的好处是每次插入或删除一个元素&#xff0c;就配置或释放一个元素空间。 list 是支持常数时间从容器任何位置插入和移除元素容器&#xff0c;但不支持快速随机访问。list 通常实现…

Linux操作系统之进程间通讯—共享内存与消息队列

文章目录一、共享内存1、共享内存的原理2、共享内存的实现三、消息队列1、消息队列原理2、消息队列实现一、共享内存 1、共享内存的原理 共享内存为多个进程之间共享和传递数据提供了一种有效的方式。共享内存是先在物理内存上申请一块空间&#xff0c;多个进程可以将其映射到…

dp (四) 打家劫舍

打家劫舍(一)_牛客题霸_牛客网 描述 你是一个经验丰富的小偷&#xff0c;准备偷沿街的一排房间&#xff0c;每个房间都存有一定的现金&#xff0c;为了防止被发现&#xff0c;你不能偷相邻的两家&#xff0c;即&#xff0c;如果偷了第一家&#xff0c;就不能再偷第二家&#…

离线和实时

离线和实时 一、数仓基本概念 1. 数据仓库架构 我们在谈数仓之前&#xff0c;为了让大家有直观的认识&#xff0c;先来谈数仓架构&#xff0c;“架构”是什么&#xff1f;这个问题从来就没有一个准确的答案。这里我们引用一段话&#xff1a;在软件行业&#xff0c;一种被普遍…

8种将pdf转化成excel的方法,亲测实用又有效!

PDF 到 Excel 的在线或离线转换工具可帮助您将原始或扫描的 PDF 文件转换为 Excel 格式。将 PDF 转换为 Excel 主要是为了获得可编辑的 Excel 文件或满足其他目标&#xff1b; 通过消除容易出错的手动复制粘贴来保持数据准确性。在需要使用 Excel 格式的大量 PDF 数据时节省时…

药物临床试验数据分析(靶点|适应症|企业|登记信息)

临床试验相关工作者在对药物进行系统性研究时都需要对药物做临床试验&#xff0c;且在对药物进行临床试验前和临床试验期间都需要对相关药物临床试验数据信息进行全面的分析及了解&#xff0c;有助于目标药物临床试验的顺利开展。药物临床试验数据覆盖非常宽泛&#xff0c;包含…

【进阶C语言】自定义类型——结构体+枚举+联合体

文章目录一.结构体1.内存对齐存在的原因规则举例2.位段二.枚举定义枚举的优点三.联合体定义特点内存计算一.结构体 1.内存对齐 存在的原因 平台原因(移植原因)&#xff1a; 不是所有的硬件平台都能访问任意地址上的任意数据的&#xff1b;某些硬件平台只能在某些地址处取某些…

【PHPWord】使用PHPWord自动生成TOC根据内容的目录完整示例 | table of contents (TOC)

目录 一、什么是Word中的目录二、目录的生成在Word中是如何操作的三、PHPWord中目录的生成1. 插入目录2.添加页码3.修改目录的字体样式4.修改目录的目录样式5.修改生成目录的标题等级四、完整示例代码和效果图一、什么是Word中的目录 在我们日常使用中,经常需要在文档中插入目…

微信小程序项目实例——心情记事本

微信小程序项目实例——心情记事本 文章目录微信小程序项目实例——心情记事本一、项目展示二、首页三、效果图文末项目代码见文字底部&#xff0c;点赞关注有惊喜 一、项目展示 心情记事本是一款可以记录当前心情和生活的记事本 用户可以选择当前的心情&#xff08;开心、平淡…

自己写一个简单的工作流引擎V1

1.需求 市面上常见的工作流组件一般都是前端通过拖拉拽配置流程图&#xff0c;后端流程引擎解析流程配置&#xff0c;这里我们手写一个简单的流程引擎&#xff0c;先实现串行流程&#xff0c;例如下&#xff1a; 小明提交了一个申请单&#xff0c;然后经过经理审批&#xff0…

【学习】Meta Learning、

文章目录一、Meta Learning什么是元学习&#xff1f;元学习–第1步元学习–第2步元学习–步骤3架构ML和Meta回顾GD学习好的初始化参数学习学习率NAS寻找网络结构data augmentationSample ReweightingFew-shot Image Classification元学习与自我监督学习元学习和知识蒸馏元学习和…

语音识别综述

语音识别的基本单位 Phoneme&#xff1a; 音位&#xff0c;音素 a unit of sound 是声音的最基本单位**&#xff0c;每个词语token的声音由多个 phoneme 组成** Grapheme&#xff08;字位&#xff09; smallest unot of a writing system 每个单词书写最基本的单位&#xff…

Vue初识系之Webpack

文章目录一 Webpack简介二 Webpack的安装和使用2.1 安装Webpack2.2 配置参数初识2.3 使用webpack一 Webpack简介 webpack本质上是一个现代JavaScript应用程序的静态模块打包器&#xff08;modulebundler&#xff09;。当webpack处理应用程序时&#xff0c;它会递归地构建一个依…

LeetCode(String)2194. Cells in a Range on an Excel Sheet

1.问题 A cell (r, c) of an excel sheet is represented as a string “” where: denotes the column number c of the cell. It is represented by alphabetical letters. For example, the 1st column is denoted by A, the 2nd by B, the 3rd by C, and so on. is the ro…

Java抽象类:概述

1.抽象类 在Java中abstract是抽象的意思&#xff0c;可以修饰类、成员方法。 abstract修饰类&#xff1a;这个类就是抽象类。 abstract修饰方法&#xff1a;这个方法就是抽象方法。 修饰符 abstract class 类名{修饰符 abstract 返回值类型 方法名(形参列表); } public ab…

助力旅游业复苏,IPIDEA让旅游资源聚合更简单

目前我国疫情防控政策的优化&#xff0c;极大的简化了出境手续&#xff0c;对于深受疫情影响的旅游业来说&#xff0c;这无疑是一个好消息。随着旅游消费需求持续的增长&#xff0c;旅游业将会逐渐进入全面复苏的新进程&#xff0c;焕发新的活力。 全球旅游市场都在关注着中国…

ABAP 内表的定义,与PERFORM传值的定义<转载>

很早之前就想总结一下内表和定义和perform的传值定义&#xff0c;结果要么没时间&#xff0c;要么有时间忘了。 今天在网上看到一个博文写的还比较清楚&#xff0c;故读书人窃来一用 ^ - ^ 原文链接&#xff1a;https://blog.csdn.net/lmf496891416/article/details/117702217 …