前言:
前面介绍app.vue的时候已经介绍到了。
javascript
<template>
<div id="app">
<router-view v-if="isRouterAlive"/>
</div>
</template>
我们看到了这个:
这个其实是vue-router的语法
这个就要涉及到vue-router这个技术栈
这篇文章的内容主要是两个点
1.vue-router技术栈开发人员应该了解的信息领域
2.vue-cli的基本路由核心应该配置的基本东西
1.vue-router技术栈开发人员应该了解的信息领域
1.vue-router如何配置到vue-cli里面去
2.vue-router的知识体系是什么
3.vue-router提供的代码使用
2.vue-cli的基本路由核心应该配置的基本东西
你看到的 <router-view v-if="isRouterAlive"/> 确实是 Vue Router 的核心。它就像一个"占位符",告诉 Vue 把当前 URL 对应的组件内容渲染在这里。v-if="isRouterAlive" 通常用于实现强制刷新视图的效果。
你总结的两个方向很清晰。以下我根据这两个方向,结合你贴出的代码,整理了 Vue Router 的信息图谱和核心配置清单。
1. vue-router 技术栈人员应了解的信息领域
如果把 Vue Router 想象成一个"地图导航系统",其知识体系可分为三个层次:
1.1 核心机制(它是什么?怎么工作?)
- 核心原理 :本质是建立 URL路径 与 Vue组件 之间的映射关系。当 URL 变化时,它不会刷新页面,而是渲染对应的组件,实现单页应用 (SPA) 的"假跳转"。
- 两种模式 :
- Hash 模式 :URL 中带有
#,兼容性好,不需要服务器配置。 - History 模式 :URL 更美观(无
#),但需要后端服务器配合做"兜底"配置,否则刷新页面会 404。
- Hash 模式 :URL 中带有
1.2 核心功能(它能做什么?)
这是构建应用时必须掌握的功能模块:
- 路由配置 :定义路径和组件的映射关系,支持无限嵌套的子路由 (
children),用于构建复杂的页面布局。 - 路由跳转 :
- 声明式:在模板中使用
<router-link to="...">标签,它会被渲染成一个<a>标签。 - 编程式:在逻辑中使用
router.push(...)或router.replace(...)进行跳转。
- 声明式:在模板中使用
- 路由传参 :
params:类似于"路径参数",如/user/123,通常用于标识资源。需要在路由配置中定义path: '/user/:id'。query:类似于"查询字符串",如/user?id=123,通常用于附带搜索条件等参数。
- 导航守卫:可以理解为路由跳转过程中的"安检"或"保险丝",常用于登录拦截、权限验证、页面标题修改等。
- 路由元信息 (
meta) :在路由配置中附加自定义数据,例如{ meta: { requiresAuth: true } },配合导航守卫即可轻松实现"哪些页面需要登录后才能访问"的逻辑。
1.3 在项目中的集成方式(代码怎么用?)
在你的 main.js 入口文件中,通常可以看到这段代码:
javascript
import { createApp } from 'vue'
import App from './App.vue'
import router from './router' // 1. 引入路由配置
const app = createApp(App)
app.use(router) // 2. 注册路由插件
app.mount('#app')
完成这步,整个 Vue 应用就获得了路由能力。
2. vue-cli 项目中路由的核心配置清单
基于你提到的 vue-cli 和 app.vue 入口,一个最基础但完整的路由配置包含以下文件和步骤(以 Vue 3 为例):
2.1 核心文件与结构
通常在 src 目录下创建一个 router 文件夹,里面包含一个 index.js 文件。这是路由的"总调度室"。
2.2 核心配置步骤
第一步:定义路由组件
在 src/views 或 src/components 目录下创建 .vue 文件。
例如:Home.vue, About.vue
第二步:配置路由映射 (src/router/index.js)
javascript
// 1. 引入 Vue 核心库和组件
import { createRouter, createWebHistory } from 'vue-router'
import Home from '../views/Home.vue'
// 2. 定义路由映射表 (routes)
const routes = [
{
path: '/',
name: 'Home',
component: Home // 直接引入,性能好
},
{
path: '/about',
name: 'About',
// 懒加载:只有访问时才加载该组件,优化首屏速度
component: () => import('../views/About.vue')
}
]
// 3. 创建路由实例 (router)
const router = createRouter({
history: createWebHistory(), // 使用 history 模式
routes // 将映射表注入实例
})
// 4. 导出路由实例
export default router
第三步:在入口文件注入 (src/main.js)
javascript
import { createApp } from 'vue'
import App from './App.vue'
import router from './router' // 导入上面导出的 router
const app = createApp(App)
app.use(router) // 这一步是关键,让整个应用具备路由能力
app.mount('#app')
第四步:在模板中指定渲染位置 (src/App.vue)
这就是你开头提到的代码:
html
<template>
<div id="app">
<!-- 核心点:路由出口 -->
<!-- 当前 URL 匹配到的组件,会被渲染在这里 -->
<router-view />
</div>
</template>
完成这四步,在地址栏输入 / 或 /about,<router-view/> 处就会自动显示 Home 或 About 组件的内容了。
为了帮助你更好地理解,这里有一个简单的流程图,展示了当你改变 URL 时,Vue Router 是如何工作的:
Yes
No
用户改变URL
Vue Router
监听地址变化
在 routes 配置中
查找匹配的路由规则
找到对应的组件
如:/about -> About.vue
执行路由守卫
(如:登录检查)
守卫放行?
在 渲染目标组件
阻止跳转或重定向
更新页面内容
(无刷新,SPA体验)
总结
- 知识体系 :需要掌握核心原理 (SPA)、功能模块 (传参、守卫)、集成方式。
- 核心配置 :也就是这"四板斧 "------
- 定义
routes(路径与组件对应表)。 - 创建
router实例并导出。 - 在
main.js中执行app.use(router)。 - 在
App.vue中写入<router-view>占位。
- 定义