当前位置: 面试刷题>> Vue Router 中 route 和 router 有哪些区别?


在Vue开发中,Vue Router作为Vue.js的官方路由管理器,是构建单页面应用(SPA)不可或缺的一部分。对于初学者而言,`router`和`route`这两个概念可能会产生混淆,但实际上它们在Vue Router中扮演着截然不同的角色。作为一位高级程序员,理解这些差异对于编写高效、可维护的代码至关重要。 ### Vue Router中的`router` 在Vue Router中,`router`对象是整个路由的实例,它包含了所有的路由信息以及路由跳转的方法。你可以通过Vue实例的`$router`属性来访问它。`router`对象主要负责构建路由映射表、处理路由的跳转、以及管理路由的生命周期等。 **主要功能**: - **路由映射**:定义应用中的路由,将URL路径映射到对应的组件上。 - **路由跳转**:提供编程式导航的API,如`router.push()`, `router.replace()`, `router.go()`等,用于实现页面间的跳转。 - **路由守卫**:通过全局守卫、路由独享守卫、组件内守卫等机制,在路由跳转前后执行特定逻辑,如权限校验、页面标题设置等。 **示例代码**: ```javascript // 创建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({ mode: 'history', base: process.env.BASE_URL, routes }); // 使用router实例 export default router; // 在Vue实例中使用 new Vue({ router, render: h => h(App) }).$mount('#app'); // 编程式导航 this.$router.push('/about'); ``` ### Vue Router中的`route` 与`router`不同,`route`对象表示当前激活的路由状态信息对象,包含了当前URL解析得到的信息,以及URL匹配到的路由记录(route records)。你可以通过Vue组件内的`this.$route`来访问它。`route`对象主要用于获取当前路由的信息,如路径、查询参数、路由参数等。 **主要属性**: - **$route.path**:字符串,对应当前路由的路径,总是解析为绝对路径,如 "/foo/user123"。 - **$route.params**:一个包含动态片段和全星片段的键值对的对象。 - **$route.query**:一个包含路由中查询参数的对象。例如,对于路径 "/foo?user=1",则有 $route.query.user == 1。 - **$route.hash**:当前路由的 hash 值 (带 #) ,如果没有 hash 值,则为空字符串。 - **$route.fullPath**:完成解析后的 URL,包含查询参数和 hash 的完整路径。 **示例代码**: ```vue ``` ### 总结 在Vue Router中,`router`和`route`虽一字之差,但职责分明。`router`是Vue Router的实例,负责整个路由系统的配置和导航功能;而`route`则代表了当前激活的路由状态信息,用于在组件中获取当前路由的详细信息。深入理解这两个概念,对于掌握Vue Router以及构建高效、可维护的单页面应用至关重要。在开发过程中,合理利用Vue Router提供的API和路由守卫等机制,可以大大提升开发效率和应用的用户体验。希望这个回答能够帮助你更好地理解和应用Vue Router。
推荐面试题