vue利用a标签跳转页面 出现 `http://xxxxxx/about#/about` 问题原因和解决方法

本文介绍了在Vue项目中使用a标签进行路由跳转时遇到的问题,如路径格式不正确。通过分析,发现是由于路由模式(hash vs history)不匹配导致的。解决方案是根据实际路由模式(hash用#,history用/)调整a标签的href属性。同时,回顾了a标签的基本用法及其href属性的不同用途。

START

  • 前段时间有小伙伴在vue项目中,路由跳转的时候,使用a标签去跳转路由,遇到跳转不生效,路径还是奇怪的http://xxxxxx/about#/about,记录一下这个问题。

1.问题

1.1 编写的代码:

<a href="/about">我是a标签,点击我跳转到关于页面</a>

1.2 问题描述
  • 点击a标签页面跳转不生效;
  • 点击之后路径从http://localhost:8080#/about变化为http://localhost:8080/about#/about

2.问题分析与解决

  1. 背景我说一下,首先我们知道vue单页面应用,有两种路由模式。一个叫hash,一个叫history。不清楚路由模式可以看我写的博客:我想理解 hash history 两种前端路由

  2. 跳转前的路径存在#号,可以很明显的得知,当前的项目的路由模式是使用的hash模式。

  3. 我们一般路由跳转,创建的例如 <router-link to="/about">About</router-link>,其实底层就是a标签。

在这里插入图片描述

模式代码页面展示
history<router-link to="/about">About</router-link><a href="/about" class="">About</a>
hash<router-link to="/about">About</router-link><a href="#/about" class="">About</a>

解决答案:
写到这里答案就呼之欲出了,其实本质<router-link/>也是利用a标签切换路由的,我们写原生的a标签也是没问题的.但是我们a标签的路径需要和我们路由模式匹配。

  • 如果是hash路由,使用href="#/xxxx"进行跳转;
  • 如果是history路由,使用href="/xxxx"进行跳转;

xxxx可替换为你想要跳转的路径

其他

a标签基本介绍

首先看看我们的a标签<a></a>W3C基本介绍

  • <a>标签定义超链接,用于从一个页面链接到另一个页面;
  • <a>元素最重要的属性是 href 属性,它指定链接的目标

href属性可以设置的URL:

  • 绝对 URL - 指向另一个站点(比如 href=“http://www.example.com/index.htm” rel=“external nofollow” target=“_blank” )
  • 相对 URL - 指向站点内的某个文件(href=“index.html”)
  • 锚 URL - 指向页面中的锚(href=“#top”)

END

  • 其实是一个很简单的问题,一一对应即可。
在uni—app课程中完成下面的题目要求,1.题目是关于怪奇物语的推荐,顺便帮我优化下题目,你需要给我全部代码的撰写以及代码写时的文件位置命名。:2、界面不低于十个 3、界面需要有一定关联性 4、界面需要美观友好 5、项目需要兼容安卓,IOS,微信小程序 6、需要使用至少3个自定义组件 7、代码需要有一定的注释,且写作需要规范 项目目录结构为以下 src/ ├── components/ # 自定义组件 │ ├── CardItem.vue # 卡片式展示组件 │ ├── CharacterList.vue # 角色列表组件 │ └── RecommendSlider.vue # 推荐轮播组件 │ ├── pages/ # 页面文件夹 │ ├── index/ # 首页 │ │ └── index.vue │ ├── characters/ # 角色页面 │ │ └── characters.vue │ ├── episodes/ # 集数详情 │ │ └── episodes.vue │ ├── behind-the-scenes/ # 幕后花絮 │ │ └── behind-the-scenes.vue │ ├── recommendations/ # 推荐页面 │ │ └── recommendations.vue │ ├── timeline/ # 时间轴故事线 │ │ └── timeline.vue │ ├── settings/ # 设置页 │ │ └── settings.vue │ ├── about/ # 关于我们 │ │ └── about.vue │ ├── gallery/ # 图片画廊 │ │ └── gallery.vue │ └── contact/ # 联系方式 │ └── contact.vue │ ├── static/ # 静态资源 │ ├── images/ # 图片资源 │ │ ├── poster.jpg │ │ ├── characters/ │ │ └── ... │ └── fonts/ # 字体文件(可选) │ ├── common/ # 公共工具函数 │ └── utils.js │ └── App.vue # 根组件
最新发布
11-05
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lazy_tomato

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值