mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4mobile wallpaper 5mobile wallpaper 6
647 字
2 分钟
Vue2 项目 vue-router@3.6.5 完整配置教程
2026-06-22

Vue2 项目 vue-router@3.6.5 完整配置教程#

一、环境说明#

  • 项目环境:Vue-CLI 搭建的 Vue2 项目
  • 路由版本:vue-router@3.6.5(核心适配规则:Vue2 仅支持 3.x 版本,4.x 版本专为 Vue3 适配,不可混用)

二、安装指定版本路由#

打开项目终端,执行对应包管理命令安装固定版本路由:

1. npm 安装#

npm install vue-router@3.6.5 --save

2. yarn 安装#

yarn add vue-router@3.6.5

三、创建标准工程化路由目录#

在项目 src 目录下新建对应文件夹及文件,遵循前端工程化规范,完整目录结构如下:

src/
├── router/ # 路由核心目录
│ └── index.js # 路由配置入口文件
├── views/ # 页面级组件目录
│ ├── Home.vue # 首页组件
│ ├── Login.vue # 登录页组件
│ └── NotFound.vue # 404兜底页面组件
├── components/ # 公共小组件目录
├── App.vue # 根组件
└── main.js # 项目入口文件

四、router/index.js 完整配置(通用工程化模板)#

该配置包含路由报错修复、懒加载、重定向、全局路由守卫、环境适配等企业级常用配置,可直接复用:

import Vue from 'vue'
import VueRouter from 'vue-router'
// 解决 vue-router3 重复点击路由控制台报错问题
const originalPush = VueRouter.prototype.push
VueRouter.prototype.push = function push(location) {
return originalPush.call(this, location).catch(err => err)
}
const originalReplace = VueRouter.prototype.replace
VueRouter.prototype.replace = function replace(location) {
return originalReplace.call(this, location).catch(err => err)
}
// 全局注册路由插件
Vue.use(VueRouter)
// 路由规则配置
const routes = [
{
path: '/',
redirect: '/home' // 根路径重定向至首页
},
{
path: '/home',
name: 'Home',
component: () => import('@/views/Home.vue') // 路由懒加载,优化打包体积
},
{
path: '/login',
name: 'Login',
component: () => import('@/views/Login.vue')
},
// 404 兜底路由,必须放置在所有路由最后
{
path: '*',
component: () => import('@/views/NotFound.vue')
}
]
// 创建路由实例
const router = new VueRouter({
mode: 'history', // history模式:地址无#号;hash模式:带#号,本地打开无需后端配置
base: process.env.BASE_URL, // 适配Vue-CLI内置环境变量,兼容打包部署路径
routes
})
// 全局前置路由守卫(项目鉴权核心)
router.beforeEach((to, from, next) => {
// to:即将跳转的目标路由对象
// from:当前离开的路由对象
// next:路由放行函数,必须执行
const token = localStorage.getItem('token')
// 未登录时,拦截所有非登录页面请求,强制跳转登录页
if (to.path !== '/login' && !token) {
next('/login')
} else {
next()
}
})
export default router

五、main.js 引入并挂载路由#

在项目入口文件引入路由并全局挂载,挂载后全局可使用 $router(路由实例)、$route(路由参数):

import Vue from 'vue'
import App from './App.vue'
// 导入自定义路由配置
import router from './router'
Vue.config.productionTip = false
// 挂载路由到Vue实例
new Vue({
router,
render: h => h(App)
}).$mount('#app')

六、App.vue 配置路由出口与导航#

<router-view> 为路由页面渲染出口,是路由生效的必备节点;<router-link> 替代原生 a 标签,实现页面无刷新跳转:

<template>
<div id="app">
<!-- 页面导航菜单 -->
<router-link to="/home">首页</router-link>
<router-link to="/login">登录页</router-link>
<!-- 路由页面渲染出口(必不可少) -->
<router-view></router-view>
</div>
</template>
<script>
export default {
name: 'App'
}
</script>

七、页面组件编程式路由跳转(JS 控制)#

在任意.vue 组件中,可通过 JS 代码实现灵活路由跳转,适配业务场景:

// 1. 字符串路径跳转(简单场景)
this.$router.push('/home')
// 2. 命名路由跳转(推荐,修改路径不影响跳转逻辑)
this.$router.push({ name: 'Home' })
// 3. 命名路由带参数跳转(params传参)
this.$router.push({ name: 'Detail', params: { id: 1001 } })
// 4. 替换当前页面(无历史记录,无法返回上一页)
this.$router.replace('/login')
// 5. 页面回退(-1=返回上一页,-2=返回上两页)
this.$router.go(-1)

八、工程化常用拓展配置#

8.1 嵌套路由(后台管理系统核心用法)#

适用于页面嵌套布局场景(如后台侧边栏+主体内容),修改 routes 路由规则:

const routes = [
// 省略基础路由...
{
path: '/admin',
name: 'Admin',
component: () => import('@/views/Admin.vue'),
// 子路由配置(子路由path无需加/)
children: [
{
path: 'user',
component: () => import('@/views/admin/User.vue')
},
{
path: 'order',
component: () => import('@/views/admin/Order.vue')
}
]
}
]

注意:父页面Admin.vue 中必须添加 <router-view>,用于承载子路由页面,否则子页面无法渲染。

8.2 history 模式打包 404 解决方案#

路由开启 history 模式后,项目打包部署至服务器,刷新页面会出现 404 错误(本地开发无此问题),解决方案:

  • Nginx 服务器:配置 try_files 规则,将所有请求重定向到 index.html
  • Apache、Tomcat:配置页面重定向规则,统一拦截404请求指向项目入口文件

九、项目配置验证#

执行项目启动命令,验证路由配置是否生效:

npm run serve

启动项目后,切换页面导航,若实现无刷新页面跳转、地址栏正常变化、404页面正常兜底、未登录拦截生效,则代表路由配置完成。

分享

如果这篇文章对你有帮助,欢迎分享给更多人!

Vue2 项目 vue-router@3.6.5 完整配置教程
http://www.linyuan0512.top/posts/vue2-项目-vue-router365-完整配置教程/
作者
林远
发布于
2026-06-22
许可协议
Unlicensed

部分信息可能已经过时

封面
Sample Song
Sample Artist
封面
Sample Song
Sample Artist
0:00 / 0:00