Vue Router 是 Vue.js 官方的路由管理器,用于实现单页面应用(SPA)的路由功能。其核心原理主要涉及路由配置、监听浏览器事件、组件渲染和路由守卫等方面,下面详细介绍:
- 路由配置与路由映射表
原理
在使用 Vue Router 时,需要定义一个路由配置对象,其中包含了路径与组件的映射关系。Vue Router 会将这些配置信息整理成一个路由映射表,当用户访问某个路径时,它会根据这个映射表找到对应的组件进行渲染。
import Vue from 'vue';
import VueRouter from 'vue-router';
import Home from './views/Home.vue';
import About from './views/About.vue';
Vue.use(VueRouter);
const routes = [
{
path: '/',
name: 'Home',
component: Home
},
{
path: '/about',
name: 'About',
component: About
}
];
const router = new VueRouter({
routes
});
export default router;
监听浏览器事件
原理
Vue Router 需要监听浏览器的 URL 变化事件,以便在用户进行页面导航时做出相应的处理。常见的 URL 变化方式有两种:哈希(Hash)模式和历史(History)模式。
哈希模式:监听浏览器的 hashchange 事件,当 URL 中的哈希值(# 后面的部分)发生变化时,Vue Router 会根据新的哈希值从路由映射表中找到对应的组件进行渲染。
历史模式:使用 HTML5 的 History API,监听 popstate 事件。当用户点击浏览器的前进、后退按钮或者调用 history.pushState、history.replaceState 方法时,popstate 事件会被触发,Vue Router 会根据新的 URL 进行路由匹配和组件渲染。
window.addEventListener('hashchange', () => {
const hash = window.location.hash.slice(1);
// 根据 hash 进行路由匹配和组件渲染
});
组件渲染
原理
当用户访问某个路径时,Vue Router 会根据路由映射表找到对应的组件,并将其渲染到页面的指定位置。在 Vue 中,通常使用 组件作为路由组件的渲染出口。
<template>
<div id="app">
<!-- 导航链接 -->
<router-link to="/">Home</router-link>
<router-link to="/about">About</router-link>
<!-- 路由组件渲染出口 -->
<router-view></router-view>
</div>
</template>
<script>
export default {
name: 'App'
};
</script>