Vue的路由实现:hash模式 和 history模式

在 Vue 中,路由的实现通常使用 Vue Router 库。Vue Router 提供了两种路由模式:哈希模式(Hash mode)和历史模式(History mode)。

哈希模式(Hash mode)

在哈希模式中,路由器会使用 URL 中的哈希值(#)来模拟一个完整的 URL,当 URL 的哈希值发生变化时,路由器会根据哈希值来匹配路由。

例子:
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Vue Router - Hash Mode</title>
  <script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
  <script src="https://unpkg.com/vue-router@3.5.3/dist/vue-router.js"></script>
</head>
<body>

<div id="app">
  <router-link to="/home">Home</router-link>
  <router-link to="/about">About</router-link>
  
  <router-view></router-view>
</div>

<script>
const Home = { template: '<div>Home Page</div>' };
const About = { template: '<div>About Page</div>' };

const routes = [
  { path: '/home', component: Home },
  { path: '/about', component: About }
];

const router = new VueRouter({
  routes,
  mode: 'hash' // 使用哈希模式
});

const app = new Vue({
  router
}).$mount('#app');
</script>

</body>
</html>

在这个例子中,我们创建了一个简单的 Vue 应用,并使用了 Vue Router。路由器的模式被设置为哈希模式 mode: 'hash'。当用户点击页面上的链接时,URL 的哈希值会发生变化,路由器会根据哈希值来匹配相应的路由,并渲染对应的组件。

历史模式(History mode)

在历史模式中,路由器会使用浏览器的 History API 来管理 URL,并且不会使用哈希值。这使得 URL 看起来更加友好,没有 # 符号。

例子:
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Vue Router - History Mode</title>
  <script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
  <script src="https://unpkg.com/vue-router@3.5.3/dist/vue-router.js"></script>
</head>
<body>

<div id="app">
  <router-link to="/home">Home</router-link>
  <router-link to="/about">About</router-link>
  
  <router-view></router-view>
</div>

<script>
const Home = { template: '<div>Home Page</div>' };
const About = { template: '<div>About Page</div>' };

const routes = [
  { path: '/home', component: Home },
  { path: '/about', component: About }
];

const router = new VueRouter({
  routes,
  mode: 'history' // 使用历史模式
});

const app = new Vue({
  router
}).$mount('#app');
</script>

</body>
</html>

在这个例子中,路由器的模式被设置为历史模式 mode: 'history'。当用户点击页面上的链接时,URL 不再包含哈希值,而是使用正常的 URL 路径。这样的 URL 看起来更加干净和语义化。但需要注意的是,使用历史模式时,需要服务器端的配置来支持,以确保在用户刷新页面或直接访问某个路由时,服务器正确地返回相应的页面。

  • 9
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值