爆款云主机2核4G限时秒杀,88元/年起!
查看详情

活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 618智算钜惠季 爆款云主机2核4G限时秒杀,88元/年起!
  • 免费体验DeepSeek,上天翼云息壤 NEW 新老用户均可免费体验2500万Tokens,限时两周
  • 云上钜惠 HOT 爆款云主机全场特惠,更有万元锦鲤券等你来领!
  • 算力套餐 HOT 让算力触手可及
  • 天翼云脑AOne NEW 连接、保护、办公,All-in-One!
  • 中小企业应用上云专场 产品组合下单即享折上9折起,助力企业快速上云
  • 息壤高校钜惠活动 NEW 天翼云息壤杯高校AI大赛,数款产品享受线上订购超值特惠
  • 天翼云电脑专场 HOT 移动办公新选择,爆款4核8G畅享1年3.5折起,快来抢购!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

智算服务

打造统一的产品能力,实现算网调度、训练推理、技术架构、资源管理一体化智算服务
智算云(DeepSeek专区)
科研助手
  • 算力商城
  • 应用商城
  • 开发机
  • 并行计算
算力互联调度平台
  • 应用市场
  • 算力市场
  • 算力调度推荐
一站式智算服务平台
  • 模型广场
  • 体验中心
  • 服务接入
智算一体机
  • 智算一体机
大模型
  • DeepSeek-R1-昇腾版(671B)
  • DeepSeek-R1-英伟达版(671B)
  • DeepSeek-V3-昇腾版(671B)
  • DeepSeek-R1-Distill-Llama-70B
  • DeepSeek-R1-Distill-Qwen-32B
  • Qwen2-72B-Instruct
  • StableDiffusion-V2.1
  • TeleChat-12B

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入云市场创新解决方案
办公协同
  • WPS云文档
  • 安全邮箱
  • EMM手机管家
  • 智能商业平台
财务管理
  • 工资条
  • 税务风控云
企业应用
  • 翼信息化运维服务
  • 翼视频云归档解决方案
工业能源
  • 智慧工厂_生产流程管理解决方案
  • 智慧工地
建站工具
  • SSL证书
  • 新域名服务
网络工具
  • 翼云加速
灾备迁移
  • 云管家2.0
  • 翼备份
资源管理
  • 全栈混合云敏捷版(软件)
  • 全栈混合云敏捷版(一体机)
行业应用
  • 翼电子教室
  • 翼智慧显示一体化解决方案

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云云市场合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
  • 天翼云EasyCoding平台
天翼云培训认证
  • 天翼云学堂
  • 天翼云市场商学院
天翼云合作计划
  • 云汇计划
天翼云东升计划
  • 适配中心
  • 东升计划
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
开放能力
  • EasyCoding敏捷开发平台
培训与认证
  • 天翼云学堂
  • 天翼云认证
魔乐社区
  • 魔乐社区

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 建议与反馈
  • 用户体验官
  • 服务保障
  • 客户公告
  • 会员中心
增值服务
  • 红心服务
  • 首保服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 智算服务
  • 产品
  • 解决方案
  • 应用商城
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心

      Vue-Router(路由详解)

      首页 知识中心 其他 文章详情页

      Vue-Router(路由详解)

      2025-02-26 07:20:49 阅读次数:14

      hash,vue,Vue,地址,导航,路由,页面

      1、路由的概念

      路由的本质就是一种对应关系(此处的路由含义同之前nodejs的路由),根据不同的URL请求,返回对应不同的资源。那么url地址和真实的资源之间就有一种对应的关系,就是路由。

      路由分为:后端路由和前端路由

      • 后端路由:由服务器端进行实现并实现资源映射分发(nodejs、jsp、php等)

        • 概念:根据不同的用户URL请求,返回不同的内容(地址与资源产生对应关系)

        • 本质:URL请求地址与服务器资源之间的对应关系(映射)

       

      Vue-Router(路由详解)

      • 前端路由:根据不同的事件来显示不同的页面内容,是事件与事件处理函数之间的对应关系

        • 概念:根据不同的用户事件,显示不同的页面内容(地址与事件产生对应关系)

        • 本质:用户事件与事件处理函数之间的对应关系

       

      Vue-Router(路由详解)

       

      记住一句话:有请求就应该有响应,只不过区别在于,之前node是响应资源,现在在前端中通过事件来进行响应。

       

      2、前端路由实现

      面试题:请你说出前端路由是怎么实现的?或者有哪几种实现方式?

      答:前端路由模式有两种实现方式:hash方式、history方式。

      核心思想:通过监听地址栏的变化事件来实现资源的动态显示

      前端路由有2种模式:

      • hash模式

      hash路由模式是这样的:http:///#/xx。 有带#号,后面就是hash值的变化。改变后面的hash值,它不会向服务器发出请求,因此也就不会刷新页面。并且每次hash值发生改变的时候,会触发hashchange事件。因此我们可以通过监听该事件,来知道hash值发生了哪些变化。

      window.addEventListener('hashchange', ()=>{
        // 通过 location.hash 获取到最新的 hash 值
        console.log(location.hash);
      });
      • history模式

      形如:http:///xx/yy/zz。HTML5的History API为浏览器的全局history对象增加了该扩展方法。它是一个浏览器(bom)的一个接口,在window对象中提供了onpopstate事件来监听历史栈的改变,只要历史栈有信息发生改变的话,就会触发该事件。

      history.pushState({},title,url); // 向历史记录中追加一条记录
      history.replaceState({},title,url); // 替换当前页在历史记录中的信息。
      window.addEventListener('popstate', function(event) {
          console.log(event)
      })

      注:浏览器地址没有#, 比如(http://localhost:3001/a); 它也一样不会刷新页面的。但是url地址会改变。但它在服务器没有配置的情况下,不能手动刷新,否则返回404页面

       

      3、Vue Router

      网址:Vue Router | Vue.js 的官方路由,vuerouter是vue全家桶(vue+vue router+vuex )之一。

      vue周边生态软件、工具

      此处建议创建一个带Router的vue项目。

      3.1、介绍

      Vue Router 是 Vue.js 官方的路由管理器。它和 Vue.js 的核心深度集成,让构建单页面应用变得易如反掌。包含的功能有:

      • 嵌套的路由(套娃,父子路由)

      • 模块化的、基于组件的路由配置

      • 路由参数、查询、通配符

      • 带有自动激活(默认选中效果)的 CSS class 的链接

      • HTML5 历史模式或 hash 模式

       

      MVVM框架采用的路由都会在地址改变的时候页面不刷新,这种应用我们称之为SPA(Single Page Application)

       

      3.2、路由模式切换

      vue-router中默认使用的是hash模式的路由,也就是前面介绍的地址栏中URL带有“#”的形式,如果需要切换成history模式,则可以在创建路由实例时进行指定,指定的配置项为mode,可选值:

      • hash:设置路由模式为hash路由

      • history:设置路由模式为history路由

       

      3.3、导航方式

      含义:从一个组件/地址去往另一个组件/地址的方式。

      在页面中,导航实现有2种方式:

      • 声明式导航:通过点击链接实现的导航方式,例如HTML中的“<a>”标签,Vue中的“<router-link>”所实现的。(其性质与a标签的性质类似)

      • 编程式导航:通过调用JavaScript形式API实现的导航方式,例如location.href实现的跳转效果

      3.3.1、声明式导航

      它就是先在页面中定义好跳转的路由规则,vueRouter中通过router-link组件来完成

      <!-- 纯字符串 -->
      <router-link to="/home">Home</router-link>
      ​
      <!-- 动态绑定路径 -->
      <router-link :to="'/home'">Home</router-link>
      ​
      <!-- 对象形式 -->
      <router-link :to="{ path: '/home' }">Home</router-link>
      ​
      <!-- 通过路由命名并且携带隐式参数 -->
      <router-link :to="{ name: 'user', params: { userId: '123' }}">User</router-link>
      ​
      <!-- 对象形式带查询字符串 -->
      <router-link :to="{ path: '/register', query: { plan: 'private' }}">
        Register
      </router-link>
      ​
      <!-- 
          to 要跳转到的路由规则  string|object
          to="users"
          :to="{path:'path'}"
          tag="tagName"       去指定声明式导航产生的链接所使用的标签,默认是a标签
      -->

       

      3.3.2、编程式导航

      简单来说,编程式导航就是通过JavaScript来实现路由跳转

      this.$router.push("/login");
      this.$router.push({ path:"/login" });
      this.$router.push({ path:"/login",query:{username:"jack"} });
      // 不要将path属性与params属性一起使用,这样会导致params路由参数获取不到
      // name属性可以与params属性传参一起使用
      this.$router.push({ name:'user' , params: {id:123} });
      this.$router.go( n );//n为数字  负数为回退
      this.$router.back(); // 返回上一页

      注意点:编程式导航在跳转到与当前地址一致的URL时会报错,但这个报错不影响功能:

       

      Vue-Router(路由详解)

      如果患有强迫症,可以在路由入口文件index.js中添加如下代码解决该问题:

      // 该段代码不需要记,理解即可
      const originalPush = VueRouter.prototype.push;
      VueRouter.prototype.push = function push(location) {
          return originalPush.call(this, location).catch((err) => err);
      };

      面试题问题:this.$router与this.$route有什么区别?

      答:$router是用于做编程式导航的(改变路由的);$route是用户获取路由信息的。

       

      3.4、路由重定向

      • 概念:用户在访问地址 A 的时候,强制用户跳转到地址 C ,从而展示特定的组件页面

      • 实现: 通过路由规则的redirect属性,指定一个新的路由地址,可以很方便地设置路由的重定向

      代码示例

      <script type="javascript">
      var router = new VueRouter({
          // routes是路由规则数组 
          routes: [
              // 每个路由规则都是个配置对象,至少有path和component两个属性(重定向除外)
              // path表示当前路由规则匹配的hash地址 
              // component表示当前路由规则对应要展示的组件
              { path: '/', redirect: '/user' },
              { path: '/user', component: User },
              { path: '/register', component: Register }
          ]
      })
      </script>

      component属性是可选属性,因此在写的时候需要注意,写错了也不会报错的。

       

      3.5、嵌套路由

      路由前缀: /admin/user/add /admin/user/del /admin/user/mod

      相同部分可以提取出来,减少重复劳动。

      ————————————以上为nodejs中的概念————————————————

      上述概念在vue中被称之为叫做嵌套路由。

      套娃,可以按照之前的nodejs处的路由前缀去理解。(当有些路由有公共部分的前缀时,在vue中就可以使用嵌套路由)

      嵌套路由最关键在于理解子级路由的概念:

      比如我们有一个/users的路由,那么/users下面还可以添加子级路由,如:/users/index、/users/add等等,这样的路由情形称之为嵌套路由。

      核心思想:在父路由组件的模板内容中添加子路由链接和子路由填充位(占坑),同时在路由规则处为父路由配置children属性指定子路由规则:

      routes: [
        { 
            path: "/user", 
            component: User,  //这个不能丢
            // 通过children属性为/user添加子路由规则
            children:[
                // 子路由地址前不能写“/”,如果写了则表示从根开始
                { path: "index", component: Index },
                { path: "add", component: Add },
            ]
        }
      ]
      <!-- 需要在 User组件中定义一个router-view 用于嵌套路由的渲染显示 -->
      <router-view></router-view>

       

      3.6、404路由

      作用:用于处理当路由匹配不上的时候页面的展示(不做404路由,则页面限时白板页面)

      由于Vue路由是从上到下执行的,只要在路由配置规则中最后面放个*号(通配符)路由就可以了,例如:

      const routes = [
          { path: "/hello", redirect: Hello },
          { path: "/about", component: About },
          { path: "/news", component: News },
          // 404路由
          { path: "*", component: NotFound },
      ];

      问题:正常情况下404找不到会有状态码,是404,请问,为什么我们现在看到的状态码是200?

      答:目前是在做前端开发,不是后端开发,无法指定返回的状态码,等到vue项目上线后可以与后端服务器结合实现状态码的指定。

       

      3.7、路由参数

      本节知识点就是为了restful服务的,看如果在vue中使用restful形式进行参数传递。

      • 如何传递

        • 在声明路由的时候,将可变部分通过“:变量名”的形式进行替代

      • 如何获取

        • 获取this.$route来获取

      // 传递参数id
      var router = new VueRouter({
          // routes是路由规则数组 
          routes: [
              { path: '/user/:id', component: User },
              // 此处的“:”只是在声明的时候写,在使用的时候不需要写“:”
          ]
      })
      <template>
          <div>
              <!-- 单文件形式的组件, 可以在视图中直接接收路由参数,但是一般不这么用 -->
              这是news组件{{$route.params.id}}
          </div>
      </template>

      路由规则中的“:”只是在声明的时候写,在使用的时候不需要写“:”,例如如下代码:

       

      Vue-Router(路由详解)

      问题:如上代码,如果路由规则里声明需要传递参数,但是实际使用的时候没传递参数会怎么样?

      答:如果声明需要传递参数,但是实际不传的话则会影响落地页的显示,显示成白板(但是不报错)。但是如果有404路由在规则的最后,则匹配404路由。

      注意:在实际开发的时候会有可能需要传参也可能不需要传参的情况,这个时候需要用到可选路由参数点。

      定义可选路由参数的方式很简单,只需要在原有的路由参数声明位置后面加上个?即可。例如:

      { path: "showdetail/:id?", component: ShowDetail },

       

      3.8、路由元信息

      有时,我们可能希望将任意信息附加到路由上,例如在后续做登录判断的时候需要标记哪些地址必须登录后才能访问。这些事情可以通过接收属性对象的meta属性来实现,定义路由的时候我们可以这样配置 meta 字段:

      const routes = [
          {
              path: "/posts",
              component: PostsLayout,
              children: [
                  {
                      path: "new",
                      component: PostsNew,
                      // 只有经过身份验证的用户才能创建帖子
                      meta: { requiresAuth: true },
                  },
                  {
                      path: ":id",
                      component: PostsDetail,
                      // 任何人都可以阅读文章
                      meta: { requiresAuth: false },
                  },
              ],
          },
      ]
      版权声明:本文内容来自第三方投稿或授权转载,原文地址:https://qingshan09.blog.csdn.net/article/details/134207171,作者:前端青山,版权归原作者所有。本网站转在其作品的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如因作品内容、版权等问题需要同本网站联系,请发邮件至ctyunbbs@chinatelecom.cn沟通。

      上一篇:python 提取出sql语句中where的值

      下一篇:在IE环境下用javascript触发ABAP event

      相关文章

      2025-05-19 09:04:44

      地址与指针

      地址与指针

      2025-05-19 09:04:44
      char , 地址 , 指向
      2025-05-16 09:15:24

      WCF 配置文件分解

      WCF 配置文件分解

      2025-05-16 09:15:24
      localhost , WCF , 地址 , 服务 , 配置
      2025-05-16 09:15:24

      Redis Hash哈希

      Redis Hash哈希

      2025-05-16 09:15:24
      field , hash , Redis , value , 哈希
      2025-05-14 10:33:31

      计算机小白的成长历程——数组(1)

      计算机小白的成长历程——数组(1)

      2025-05-14 10:33:31
      strlen , 个数 , 元素 , 内存 , 十六进制 , 地址 , 数组
      2025-05-14 10:33:25

      超级好用的C++实用库之网络

      在网络相关的项目中,我们经常需要去获取和设置设备的IP地址、子网掩码、网关地址、MAC地址等信息。这些信息一般与操作系统相关,在Windows系统和Linux系统上调用的接口是不一样的。

      2025-05-14 10:33:25
      Linux , 参数 , 地址 , 接口 , 网卡 , 返回值
      2025-05-14 09:51:21

      python向IP地址发送字符串

      在Python中,向IP地址发送字符串通常意味着你需要通过某种协议来实现通信。最常见的协议包括TCP和UDP。这里,我将分别给出使用TCP和UDP协议向指定IP地址发送字符串的示例代码。

      2025-05-14 09:51:21
      TCP , UDP , 协议 , 地址 , 示例 , 端口
      2025-05-13 09:53:13

      计算机萌新的成长历程18——指针

      计算机要存储数据的话有以下几种途径,按访问速度由快到慢来排列分别是:寄存器>高速缓存>内存>硬盘。它们的存储空间大小是依次增大的,寄存器的存储空间大小最小,硬盘存储空间大小最大。

      2025-05-13 09:53:13
      内存 , 变量 , 地址 , 寄存器 , 指针
      2025-05-12 08:45:17

      复原 IP 地址

      有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 '.' 分隔。

      2025-05-12 08:45:17
      IP , 地址 , 示例
      2025-05-09 08:50:42

      底部导航切换页面

      底部导航切换页面

      2025-05-09 08:50:42
      切换 , 导航
      2025-05-09 08:50:42

      下拉刷新

      下拉刷新

      2025-05-09 08:50:42
      动画 , 页面
      查看更多
      推荐标签

      作者介绍

      天翼云小翼
      天翼云用户

      文章

      33561

      阅读量

      5227827

      查看更多

      最新文章

      地址与指针

      2025-05-19 09:04:44

      Redis Hash哈希

      2025-05-16 09:15:24

      复原 IP 地址

      2025-05-12 08:45:17

      下拉刷新

      2025-05-09 08:50:42

      底部导航切换页面

      2025-05-09 08:50:42

      springmvc请求转发和重定向的四种跳转方式

      2025-05-07 09:07:56

      查看更多

      热门文章

      vue如何解决axios请求前端跨域问题

      2023-07-26 08:08:42

      VUE前端工程化-2

      2023-02-07 10:34:04

      jdk1.8HashMap扩容后链表拆分过程解析

      2022-12-28 07:22:30

      vue npm启动报错-解决

      2023-03-07 07:47:14

      【异常】前端vue后端Node.js报错“已拦截跨源请求:同源策略禁止读取位于 http:** 的远程资源。(原因:CORS 头缺少 ‘Access-Control-Allow-Origin‘)”

      2023-06-16 06:04:36

      如何查看Vue使用的版本

      2023-05-04 09:34:09

      查看更多

      热门标签

      linux java python javascript 数组 前端 docker Linux vue 函数 shell git 节点 容器 示例
      查看更多

      相关产品

      弹性云主机

      随时自助获取、弹性伸缩的云服务器资源

      天翼云电脑(公众版)

      便捷、安全、高效的云电脑服务

      对象存储

      高品质、低成本的云上存储服务

      云硬盘

      为云上计算资源提供持久性块存储

      查看更多

      随机文章

      189-vue 的依赖注入使用

      前端-vue基础23-分支循环结构2

      在vue中使用echarts

      Vue脚手架创建项目页面报错Cannot read properties of undefined (reading ‘indexOf‘)

      elementui 开关文字显示在开关里面

      交换机中IP表的生存周期及部分路由技术

      • 7*24小时售后
      • 无忧退款
      • 免费备案
      • 专家服务
      售前咨询热线
      400-810-9889转1
      关注天翼云
      • 旗舰店
      • 天翼云APP
      • 天翼云微信公众号
      服务与支持
      • 备案中心
      • 售前咨询
      • 智能客服
      • 自助服务
      • 工单管理
      • 客户公告
      • 涉诈举报
      账户管理
      • 管理中心
      • 订单管理
      • 余额管理
      • 发票管理
      • 充值汇款
      • 续费管理
      快速入口
      • 天翼云旗舰店
      • 文档中心
      • 最新活动
      • 免费试用
      • 信任中心
      • 天翼云学堂
      云网生态
      • 甄选商城
      • 渠道合作
      • 云市场合作
      了解天翼云
      • 关于天翼云
      • 天翼云APP
      • 服务案例
      • 新闻资讯
      • 联系我们
      热门产品
      • 云电脑
      • 弹性云主机
      • 云电脑政企版
      • 天翼云手机
      • 云数据库
      • 对象存储
      • 云硬盘
      • Web应用防火墙
      • 服务器安全卫士
      • CDN加速
      热门推荐
      • 云服务备份
      • 边缘安全加速平台
      • 全站加速
      • 安全加速
      • 云服务器
      • 云主机
      • 智能边缘云
      • 应用编排服务
      • 微服务引擎
      • 共享流量包
      更多推荐
      • web应用防火墙
      • 密钥管理
      • 等保咨询
      • 安全专区
      • 应用运维管理
      • 云日志服务
      • 文档数据库服务
      • 云搜索服务
      • 数据湖探索
      • 数据仓库服务
      友情链接
      • 中国电信集团
      • 189邮箱
      • 天翼企业云盘
      • 天翼云盘
      ©2025 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
      公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
      • 用户协议
      • 隐私政策
      • 个人信息保护
      • 法律声明
      备案 京公网安备11010802043424号 京ICP备 2021034386号