当前位置:首页 > VUE

vue路由实现和原理

2026-01-22 14:50:25VUE

Vue 路由的实现方式

基于 vue-router 的配置 安装 vue-router 后,通过 Vue.use() 注册插件。定义路由表(routes)并创建 router 实例,注入到 Vue 根实例中。

import Vue from 'vue';
import VueRouter from 'vue-router';
import Home from './views/Home.vue';

Vue.use(VueRouter);

const routes = [
  { path: '/', component: Home },
  { path: '/about', component: () => import('./views/About.vue') }
];

const router = new VueRouter({
  routes
});

new Vue({
  router,
  render: h => h(App)
}).$mount('#app');

动态路由与参数传递 通过 : 定义动态路径参数,组件内通过 this.$route.params 访问。

{ path: '/user/:id', component: User }

嵌套路由 使用 children 属性定义嵌套路由结构,父组件需包含 <router-view>

{
  path: '/parent',
  component: Parent,
  children: [
    { path: 'child', component: Child }
  ]
}

Vue 路由的核心原理

Hash 模式与 History 模式

  • Hash 模式:利用 URL 的 # 部分(如 http://example.com/#/path),通过监听 hashchange 事件实现路由切换。兼容性强,无需服务器配置。
  • History 模式:基于 HTML5 History API(pushState/replaceState),URL 无 #(如 http://example.com/path)。需服务器支持,避免直接访问子路径时 404。

路由切换流程

  1. 用户点击 <router-link> 或调用 this.$router.push()
  2. 路由实例根据路径匹配路由表,获取目标组件。
  3. 触发导航守卫(如 beforeEach),确认后更新视图。
  4. 渲染新组件到 <router-view>,同时更新 URL。

响应式实现 Vue Router 通过将当前路由信息($route)定义为响应式对象,当路径变化时自动触发组件更新。依赖 Vue 的响应式系统,确保视图与 URL 同步。

导航守卫的应用

全局守卫

  • router.beforeEach:在导航前执行,可用于权限验证。
  • router.afterEach:导航完成后执行,适合日志记录。
router.beforeEach((to, from, next) => {
  if (to.meta.requiresAuth && !isAuthenticated) next('/login');
  else next();
});

组件内守卫

  • beforeRouteEnter:组件渲染前调用。
  • beforeRouteUpdate:当前路由改变但组件复用时调用。
  • beforeRouteLeave:离开路由前调用,可阻止导航。
export default {
  beforeRouteLeave(to, from, next) {
    if (unsavedChanges) {
      if (confirm('Leave without saving?')) next();
    } else next();
  }
};

路由懒加载优化

通过动态导入(import())实现代码分割,减少初始加载体积。

const About = () => import('./views/About.vue');

结合 Webpack 的魔法注释可命名 chunk:

const About = () => import(/* webpackChunkName: "about" */ './views/About.vue');

vue路由实现和原理

标签: 路由原理
分享给朋友:

相关文章

vue rooter 实现原理

vue rooter 实现原理

Vue Router 实现原理 Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。其核心实现原理包括路由匹配、组件渲染和导航守卫等机制。 路由匹配与动态路由 V…

vue路由实现介绍

vue路由实现介绍

Vue 路由实现介绍 Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。它通过动态映射组件到路由实现页面无刷新切换,同时支持嵌套路由、路由参数、导航守卫等高级功能…

vue cli实现原理

vue cli实现原理

Vue CLI 实现原理 Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统,其核心实现原理可以分为以下几个部分: 核心架构 Vue CLI 采用插件化架构,通过 @vue/cli…

vue实现路由跳转

vue实现路由跳转

Vue 路由跳转的实现方式 在 Vue 中,路由跳转可以通过 vue-router 实现,以下是几种常见的方法: 声明式导航(模板中使用 <router-link>) 通过 <r…

css动画制作原理

css动画制作原理

CSS动画制作原理 CSS动画通过关键帧(@keyframes)和动画属性(如animation-name、animation-duration)实现动态效果。核心原理分为两部分:定义动画关键帧和绑定…

vue路由实现原理

vue路由实现原理

Vue 路由实现原理 Vue Router 是 Vue.js 的官方路由管理器,其核心原理基于前端路由的实现方式,主要包括哈希模式(Hash Mode)和历史模式(History Mode)。 哈…