vue -- 如何去掉url默认的锚点#

本文介绍了如何在Vue项目中使用Router的History模式替代默认的Hash模式,并通过配置路由重定向和错误页面处理来提升用户体验。

欢迎访问我的个人博客:http://www.xiaolongwu.cn

前言

vue项目中持续踩坑做一些记录,以便后面翻阅

项目的url中会自带#,看起来很不是舒服,其实是vue-router在搞怪,router跳转有两种实现方式:
1. hash(带#)值模式,vue-router 默认 hash 模式 —— 使用 URL 的 hash 来模拟一个完整的 URL,于是当 URL 改变时,页面不会重新加载;

  1. history模式,如果不想要很丑的 hash,我们可以用路由的 history 模式,这种模式充分利用 history.pushState API 来完成 URL 跳转而无须重新加载页面。

history模式

vue-router默认是hash模式的,我们要切换到history模式,只需在router初始化时,设置mode为history即可。官方文档

new Router({
  mode: 'history',
  routes: [ ]
})

这里面还有一些问题,就是需要考虑到用户直接输入URL的页面不存在的情况,显示404感觉会不舒服。

这时我们需要有一个通用的页面,当404时就返回这个页面,当然这个页面可以为你的主页,也可以为其他提示页面,我是这么处理的

new Router({
  mode: 'history',
  routes: [
    {
      path: '*',
      name: 'allPage',
      component: AllPage
    }
  ]
})

通用的页面,如果404就跳转到此页面

修改默认页

我们知道router默认显示的页面是配置项中的 ‘/’,如果我们需要让页面打开默认显示 ‘/home’页面呢,这里就引出了路由的重定向配置,具体如下图

image

如果您觉得我没讲清楚,可以跳转至官网文档查看

我的个人博客地址:http://www.xiaolongwu.cn

github资源地址:https://github.com/vue – 如何去掉url默认的锚点#.md

我的优快云博客地址:https://blog.youkuaiyun.com/wxl1555

如果您对我的博客内容有疑惑或质疑的地方,请在下方评论区留言,或邮件给我,共同学习进步。

邮箱:wuxiaolong802@163.com

### 如何在 Vue 中使用 `vue-baidu-map` 的 `BmMarker` 组件 #### 参数说明 `BmMarker` 是用于在百度地图上标记的组件。以下是其主要参数及其作用: | 参数名 | 类型 | 描述 | |--------|------|------| | position | Object | 标记的地理位置,需指定 `{lng: Number, lat: Number}` 形式的经纬度对象[^1]。 | | icon | Object | 自定义图标配置项,支持设置图片路径、大小等属性[^5]。 | | title | String | 鼠标悬停时显示的文字提示信息[^4]。 | | draggable | Boolean | 是否允许拖拽该标记默认为 `false`。 | #### 示例代码 以下是一个完整的示例,展示如何在 Vue 项目中使用 `BmMarker`。 ```html <template> <baidu-map :center="{ lng: state.mapCenter.lng, lat: state.mapCenter.lat }" :zoom="state.mapZoom" class="map"> <!-- 添加一个 BmMarker --> <bm-marker :position="{lng: state.markerPosition.lng, lat: state.markerPosition.lat}" :icon="state.iconOptions" :title="state.markerTitle" :dragging="true" /> </baidu-map> </template> <script> import { reactive } from &#39;vue&#39;; export default { setup() { const state = reactive({ mapCenter: { lng: 116.404, lat: 39.915 }, // 地图中心坐标 mapZoom: 15, // 缩放级别 markerPosition: { lng: 116.404, lat: 39.915 }, // 标记位置 markerTitle: &#39;这是一个标记&#39;, // 提示文字 iconOptions: { // 自定义图标选项 url: require(&#39;@/assets/marker.png&#39;), // 图片路径 (本地资源需用 require 加载) size: { width: 32, height: 32 }, // 图像尺寸 opts: { anchor: { width: 16, height: 32 }, // 位置 imageOffset: { width: 0, height: 0 }, // 偏移量 } }, }); return { state }; } }; </script> <style scoped> .map { width: 100%; height: 500px; } </style> ``` 上述代码展示了如何通过 `BmMarker` 创建一个可拖动的地图标记,并为其设置了自定义图标和鼠标悬浮提示文字。 --- #### 注意事项 1. **API 密钥** 在初始化地图前,需要确保已在项目的入口文件(如 `main.js`)中正确引入并注册插件,同时提供有效的 API Key。 ```javascript import BaiduMap from &#39;vue2-baidu-map&#39;; Vue.use(BaiduMap, { ak: &#39;您的AK&#39; }); ``` 2. **自定义图标路径** 如果使用的是本地图片作为标记图标,则需要通过 `require()` 方法加载图片资源;如果是网络图片,则可以直接填写 URL。 3. **版本兼容性** 若遇到功能异常或样式问题,请确认所使用的 `vue-baidu-map` 版本与文档匹配。必要时可以调整依赖库版本或修改底层调用逻辑[^2]。 --- ###
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值