vue-router 是什么?
vue-router 是专为 vue.js 设计的官方路由管理器 推荐阅读官方文档
vue-router 的本质
vue-router 的本就就是监听地址栏 URL 变化显示不同的视图
vue-router 基本使用
js
// main.js
import { createApp } from "vue";
import router from "./router";
import App from "./App.vue";
createApp(App).use(router).mount();
// router/index.js
import { createRouter, createWebHashHistory } from "vue-router";
import Home from "@/views/home.vue";
import About from "@/views/about.vue";
const routes = [
{ path: "/", component: Home },
{ path: "/about", component: About },
];
export default createRouter({
history: createWebHashHistory(),
routes,
});
vue
<!-- App.vue-->
<template>
<router-view />
</template>
<!-- home.vue -->
<template>
<div>home</div>
</template>
<!-- about.vue -->
<template>
<div>about</div>
</template>
vue-router 3.x 核心源码分析
- 提供全局的
router-view
和router-link
- 根据传入的
routes
选项, 匹配到不同的路径时显示对应的组件 - 给所有组件实例提供
$router
和$route
的属性
核心源码实现 3.x
- 创建匹配器, 格式化传入的参数(
create-matcher.js/create-route-map.js
) - 更具不同的
mode
创建不同的history
实例(history
) - 注册全局组件
router-view/router-link
(component
)