当前位置:首页 > VUE

js实现vue-router

2026-01-23 14:09:56VUE

Vue Router 的基本实现

Vue Router 是 Vue.js 的官方路由管理器,用于构建单页面应用(SPA)。以下是一个简单的 Vue Router 实现示例。

安装 Vue Router:

npm install vue-router

创建路由实例

在项目中创建一个路由配置文件(通常为 router/index.js),并定义路由规则:

import { createRouter, createWebHistory } from 'vue-router';
import Home from '../views/Home.vue';
import About from '../views/About.vue';

const routes = [
  {
    path: '/',
    name: 'Home',
    component: Home
  },
  {
    path: '/about',
    name: 'About',
    component: About
  }
];

const router = createRouter({
  history: createWebHistory(),
  routes
});

export default router;

在主应用中引入路由

main.js 中引入路由实例并将其挂载到 Vue 应用:

import { createApp } from 'vue';
import App from './App.vue';
import router from './router';

const app = createApp(App);
app.use(router);
app.mount('#app');

使用路由链接和视图

在组件中使用 <router-link> 进行导航,并使用 <router-view> 显示路由组件:

<template>
  <div>
    <router-link to="/">Home</router-link>
    <router-link to="/about">About</router-link>
    <router-view></router-view>
  </div>
</template>

动态路由匹配

可以通过动态路径参数匹配不同的路由:

js实现vue-router

const routes = [
  {
    path: '/user/:id',
    name: 'User',
    component: User
  }
];

在组件中可以通过 $route.params.id 获取参数值。

导航守卫

导航守卫用于在路由跳转前或跳转后执行某些操作:

router.beforeEach((to, from, next) => {
  if (to.meta.requiresAuth && !isAuthenticated) {
    next('/login');
  } else {
    next();
  }
});

路由懒加载

通过动态导入实现路由懒加载,优化性能:

js实现vue-router

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

嵌套路由

嵌套路由允许在父路由中嵌套子路由:

const routes = [
  {
    path: '/user',
    component: User,
    children: [
      {
        path: 'profile',
        component: Profile
      },
      {
        path: 'posts',
        component: Posts
      }
    ]
  }
];

在父组件中使用 <router-view> 显示子路由内容。

编程式导航

通过 router.pushrouter.replace 实现编程式导航:

router.push('/about');
router.push({ name: 'About' });
router.replace('/login');

路由元信息

可以通过 meta 字段为路由添加自定义信息:

const routes = [
  {
    path: '/admin',
    meta: { requiresAuth: true }
  }
];

标签: jsvue
分享给朋友:

相关文章

vue slot实现

vue slot实现

vue slot 的实现方法 在 Vue 中,slot 是一种内容分发机制,允许父组件向子组件传递模板内容。以下是几种常见的 slot 实现方式: 默认 slot 默认 slot 是最基础的 slo…

实现简易vue

实现简易vue

实现简易 Vue 的核心思路 Vue 的核心功能包括数据响应式、模板编译和虚拟 DOM。以下是一个简易实现方案,涵盖核心功能模块。 数据响应式系统 通过 Object.defineProperty…

vue实现suspense

vue实现suspense

Vue 3 中实现 Suspense Suspense 是 Vue 3 引入的一个内置组件,用于处理异步依赖的加载状态。它允许在等待异步组件或异步数据加载时显示一个后备内容(fallback),直到异…

vue实现答辩

vue实现答辩

Vue 实现答辩系统的关键步骤 项目初始化与配置 使用 Vue CLI 或 Vite 创建项目,安装 Vue Router 管理路由,Pinia/Vuex 进行状态管理。配置 ESLint 和 Pre…

vue拖动实现

vue拖动实现

实现 Vue 拖动功能的方法 使用 HTML5 拖放 API 在 Vue 中可以利用 HTML5 的原生拖放 API 实现拖动功能。通过 draggable 属性标记可拖动元素,结合 @dragsta…

vue 实现图钉

vue 实现图钉

实现图钉效果的步骤 在Vue中实现图钉(固定位置)效果,可以通过CSS的position: sticky属性或监听滚动事件动态修改元素样式。以下是两种常见方法: 方法一:使用CSS的position…