如何从 vue-router URL 中删除 hashtag(#)?

ram*_*793 5 vue.js

我想从 url 中删除 hashtag(#),但我还需要保存不重新加载模式。我可以吗?

我有:page.com/#/home 我想要:page.com/home

我尝试过mode: 'history',但页面会重新加载。
UPD:是否可以在不重新加载页面和使用普通 URL 的情况下创建 SPA 应用程序?

ssc*_*ep3 8

激活历史模式时,您需要首先根据文档配置您的服务器。原因是,历史模式只是改变了当前页面的 URL。当用户真正重新加载页面时,他会得到一个404错误,因为请求的 URL 实际上并不存在。重新配置服务器以始终为index.htmlSPA的主要服务提供服务可解决此问题。

#在 URL 中使用 a时(无历史模式),浏览器尝试导航到具有 ID 的元素,该 ID 是在#(在同一文档中)之后给出的。这是片段标识符的原始行为。因此,如果您使用这样的片段标识符添加指向 HTML 的链接,浏览器将不会重新加载页面,而是实际在文档中查找 ID。vue-router 会观察这个变化并将你路由到正确的路由。这就是它与哈希一起工作的原因。如果您只是向 HTML 添加一个常规 URL,则浏览器的本机行为是实际导航到此页面(硬链接)。这会导致您经验丰富的重新加载效果。

处理这个问题的方法是,永远不要使用常规链接在 Vue 单页应用程序中进行路由。使用标签<router-link>在一个页面和另一个页面之间进行路由(但仅限于 SPA 内)。这就是要走的路,无论浏览器是否允许导航而#无需重新加载。以下是推荐路由标签的文档:链接

您还可以以编程方式从一条路线路由到另一条路线。$router.push()为此使用。这是文档:链接