当前位置:首页 > VUE

vue路由实现his

2026-01-18 19:53:24VUE

Vue 路由实现 History 模式

Vue Router 默认使用 hash 模式(URL 中的 #),但可以通过配置启用 HTML5 History 模式,消除 # 并保持单页应用特性。

启用 History 模式

在 Vue Router 配置中设置 mode: 'history'

const router = new VueRouter({
  mode: 'history',
  routes: [...]
})

服务器端配置

History 模式需要服务器支持,确保所有路由请求返回 index.html,否则刷新页面会导致 404。以下是常见服务器的配置示例:

vue路由实现his

Nginx

location / {
  try_files $uri $uri/ /index.html;
}

Apache

vue路由实现his

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteRule ^index\.html$ - [L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /index.html [L]
</IfModule>

Node.js (Express)

const express = require('express');
const path = require('path');
const app = express();

app.use(express.static(path.join(__dirname, 'dist')));
app.get('*', (req, res) => {
  res.sendFile(path.join(__dirname, 'dist', 'index.html'));
});

注意事项

  • SEO 优化:History 模式对搜索引擎更友好,但需确保动态路由的 meta 信息正确。
  • 404 处理:需在服务器和前端路由中定义 404 回退逻辑。
  • 基础路径:若项目部署在子目录(如 /app/),需设置 base 选项:
    const router = new VueRouter({
      mode: 'history',
      base: '/app/',
      routes: [...]
    })

前端路由守卫

History 模式下可通过导航守卫控制权限或重定向:

router.beforeEach((to, from, next) => {
  if (to.matched.some(record => record.meta.requiresAuth)) {
    // 检查登录状态
    next({ path: '/login' });
  } else {
    next();
  }
});

通过以上配置和注意事项,可无缝实现 Vue Router 的 History 模式。

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

相关文章

vue筛选实现

vue筛选实现

Vue 筛选实现方法 使用计算属性实现筛选 计算属性是 Vue 中实现数据筛选的常用方式。通过定义一个计算属性,可以根据输入的条件动态过滤数据。 <template> <div…

vue实现全屏

vue实现全屏

Vue 实现全屏功能的方法 在 Vue 中实现全屏功能可以通过浏览器提供的 Fullscreen API 来实现。以下是几种常见的实现方式: 使用原生 Fullscreen API 通过调用 do…

vue滚动实现

vue滚动实现

Vue 滚动实现方法 使用原生滚动 在 Vue 中可以通过 ref 获取 DOM 元素,调用原生滚动方法实现滚动效果。适用于简单场景。 <template> <div ref=…

vue实现定时

vue实现定时

Vue 实现定时功能的方法 使用 setInterval 和 clearInterval 在 Vue 中可以通过 setInterval 和 clearInterval 实现定时功能。在组件的 mou…

vue实现datalist

vue实现datalist

使用 Vue 实现 HTML5 的 datalist 功能 HTML5 的 <datalist> 元素提供了一种自动完成输入框的功能,允许用户在输入时从预定义的选项列表中选择。以下是几种在…

vue 绑定实现

vue 绑定实现

Vue 绑定实现 Vue 提供了多种数据绑定的方式,包括文本插值、属性绑定、事件绑定、双向绑定等。以下是常见的绑定实现方法: 文本插值 使用双大括号 {{ }} 进行文本插值,将数据动态渲染到 D…