当前位置:首页 > 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 模式

vue路由实现和原理

  • 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 同步。

导航守卫的应用

全局守卫

vue路由实现和原理

  • 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实现路由历史

Vue 实现路由历史管理 在 Vue 中,路由历史管理通常通过 Vue Router 实现。Vue Router 提供了两种历史记录模式:hash 模式和 history 模式。以下是具体实现方法。…

vue核心实现原理详解

vue核心实现原理详解

Vue 核心实现原理 Vue.js 的核心实现原理主要包括响应式系统、虚拟 DOM、模板编译和组件化机制。以下是关键部分的详细解析: 响应式系统 Vue 2.x 使用 Object.definePr…

动态路由的实现vue

动态路由的实现vue

动态路由的实现(Vue) 在Vue中实现动态路由通常涉及以下方法: 基于路由参数(params) 在路由配置中使用动态片段(以冒号开头),例如: const routes = [ { path…

react路由如何刷新

react路由如何刷新

React 路由刷新方法 在 React 中,路由刷新通常涉及以下几种场景和解决方案: 强制重新加载当前页面 使用 window.location.reload() 可以强制刷新整个页面,但会丢失…

js实现vue路由

js实现vue路由

Vue 路由的基本实现 在 Vue.js 中实现路由功能通常使用 Vue Router 库。Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。 安装 Vue R…

vue的原理实现

vue的原理实现

Vue 的核心原理实现 Vue.js 的核心原理主要包括响应式系统、虚拟 DOM、模板编译和组件化机制。以下是关键实现细节: 响应式系统 Vue 2.x 使用 Object.defineProper…