当前位置:首页 > VUE

vue实现hash路由

2026-02-17 04:14:59VUE

Vue 实现 Hash 路由

在 Vue 中可以通过 vue-router 或手动监听 hashchange 事件来实现基于 Hash 的路由。

使用 vue-router 实现

安装 vue-router

vue实现hash路由

npm install vue-router

在项目中配置路由:

import Vue from 'vue';
import VueRouter from 'vue-router';

Vue.use(VueRouter);

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

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

new Vue({
  router,
  render: h => h(App),
}).$mount('#app');

在组件中使用路由:

vue实现hash路由

<router-link to="/">Home</router-link>
<router-link to="/about">About</router-link>
<router-view></router-view>

手动监听 hashchange 事件

如果不使用 vue-router,可以通过监听 window.onhashchange 实现简单的 Hash 路由:

export default {
  data() {
    return {
      currentRoute: window.location.hash.slice(1) || '/',
    };
  },
  created() {
    window.addEventListener('hashchange', () => {
      this.currentRoute = window.location.hash.slice(1) || '/';
    });
  },
  methods: {
    navigateTo(path) {
      window.location.hash = path;
    },
  },
};

在模板中动态渲染组件:

<button @click="navigateTo('/')">Home</button>
<button @click="navigateTo('/about')">About</button>

<div v-if="currentRoute === '/'">Home Page</div>
<div v-else-if="currentRoute === '/about'">About Page</div>

Hash 路由的特点

  • URL 格式为 http://example.com/#/path
  • 兼容性较好,支持老旧浏览器。
  • 不会向服务器发送请求,仅前端处理路由变化。
  • 适合静态部署或无后端支持的单页应用(SPA)。

标签: 路由vue
分享给朋友:

相关文章

vue实现123456

vue实现123456

Vue 实现数字 123456 的显示 在 Vue 中显示数字 123456 非常简单,可以通过以下方法实现: 方法一:直接在模板中显示 <template> <div>…

vue实现筛选

vue实现筛选

实现筛选功能的基本思路 在Vue中实现筛选功能通常需要结合数据绑定、计算属性和方法。筛选的核心逻辑是根据用户输入的条件过滤原始数据列表,并动态更新显示结果。 数据准备 定义一个数组存储原始数据,另一…

vue实现gridlayout

vue实现gridlayout

Vue 实现 Grid Layout 使用 CSS Grid 布局 CSS Grid 是一种强大的布局系统,可以直接在 Vue 组件的样式中使用。通过定义网格容器和网格项,可以快速实现复杂的布局结构。…

vue实现fragment

vue实现fragment

Vue 实现 Fragment 的方法 在 Vue 中,Fragment 允许组件返回多个根节点而不需要包裹一个额外的 DOM 元素。以下是几种实现方式: 使用 Vue 3 的 <templa…

vue实现多线程

vue实现多线程

Vue.js 本身是单线程框架,但可以通过以下方法实现类似多线程的效果或利用浏览器多线程能力: 使用 Web Worker Web Worker 是浏览器提供的多线程 API,适合处理 CPU 密集…

vue实现左右拉伸

vue实现左右拉伸

实现左右拉伸布局的方法 使用CSS Flexbox布局 Flexbox可以轻松实现左右拉伸的效果。通过设置display: flex和flex-grow属性,可以让元素填充可用空间。 <div…