当前位置: 首页 > news >正文

Vue3中router最佳封装落地

文章目录

  • 前言
  • 一、拆分路由文件夹?
  • 二、main.ts中注册路由
  • 总结


前言

router在使用过程中如果我们直接在一个文件的一个数组中配置,最后路由越来越多会导致不易管理,我们可以将一个页面的路由配置在一个数组中最后统一导入,这样就会方便很多。
一个好的项目肯定少不了模块的封装,下面我们就封装一个router路由文件,方便后续项目的维护。
本文采用的是vue3+vite+ts+vue-router


一、拆分路由文件夹?

我们将不同页面的路由放置在/src/router/modules/login.ts
在这里插入图片描述
每个模块文件里面编写路由规则
在这里插入图片描述

然后我们在/src/router/index.ts导入这个路由

import { RouteRecordRaw, createRouter, createWebHashHistory } from 'vue-router';
import NProgress from 'nprogress';
import 'nprogress/nprogress.css';

export const aboutRouter = {
    path: '/about',
    name: 'about',
    component: () => import('@/views/about/index.vue'),
    meta: {},
    children: []
} as RouteRecordRaw;


const modules: Record<string, any> = import.meta.glob(['./modules/*.ts'], {
    eager: true
});
// 配置路由
const routes: Array<RouteRecordRaw> = [];
Object.keys(modules).forEach((key) => {
    const module = modules[key].default;
    routes.push(module);
});
routes.push(aboutRouter);

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

const noStatusPage = ['/login', '/about'];
router.beforeEach(async (_to, _from, next) => {
	// 路由动画加载插件
    NProgress.start();
    const token = sessionStorage.getItem('userInfo');
    const userIsLogin = token ? true : false;
    if (userIsLogin || noStatusPage.includes(_to.path)) {
        next();
    } else {
        next('/login');
    }
});
router.afterEach((_to) => {
    NProgress.done();
});
export default router;

二、main.ts中注册路由

在这里插入图片描述

总结

这样我们就完成了router的封装,方面以后维护。

相关文章:

  • 【第21节】windows sdk编程:网络编程基础
  • 服务器机柜托管的优势有哪些?
  • Linux平台程序打包
  • 鸿蒙北向源码开发: xts用例单部件编译并执行测试用例
  • 向量库特点和使用场景
  • 七、服务器远程桌面报错
  • 鸿蒙相机开发实战:从设备适配到性能调优 —— 我的 ArkTS 录像功能落地手记(API 15)
  • 电池电量检测方法介绍,开路电压法、库仑积分法、内阻法
  • Maven环境搭建与配置
  • 系统架构设计知识体系总结
  • 关于墙面涂鸦的视觉检测与喷涂修复装置研究(大纲)
  • 通过SSH隧道与跳板机实现本地端口映射访问服务器文件
  • 数据结构之双向链表-初始化链表-头插法-遍历链表-获取尾部结点-尾插法-指定位置插入-删除节点-释放链表——完整代码
  • MTKAndroid12 解决SystemUI下拉框中,长按WIFI图标会导致崩溃问题
  • 深入了解Spring事务及其使用场景
  • go:前后端分离
  • (UI自动化测试)第二篇:元素定位的方法_name定位
  • 【学习】CMMM/DCMM等智能制造产业常见资质学习
  • hive:处理JSON格式(get_json_object()函数),连续登录题型,快速生成表(explode,stack),迭代计算
  • 使用flask_restful快速构建接口
  • 电厂 | 京东、美团为什么抢着为你送外卖?
  • 安徽铁塔回应“指挥调度中心大屏现不雅视频”:将严肃处理
  • 央行上海总部:上海个人住房贷款需求回升,增速连续半年回升
  • 被电诈100万元又要被骗71万元,女子经民警近8小时劝阻幡然醒悟
  • 五一节,和人民照相馆一起找回“拍照”的仪式感
  • 龚正会见巴西里约热内卢州州长克劳迪奥·卡斯特罗