vue2 路由模块化设计

vue2 路由模块化设计

官方demo的写法是直接将路由表放到router文件下的入口文件index.js中,这样看起来代码很冗余,不利于团队开发。
因此采用模块化进行细腻度的设计。

项目环境:vue-cli 5.0.4(需要查看cli版本直接终端输入 vue --version 即可), webpack是vue-cli内置打包工具,node 16.15.0。

路由模块化的文件结构:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Bc0dDKdU-1661415038297)(evernotecid://BE9DEFAA-6BBE-48DD-B45E-993AC7B26341/appyinxiangcom/36368386/ENResource/p357)]

下面分别介绍router文件夹下的文件。

路由入口文件 index.js

文件主要执行步骤:

  1. 安装路由
  2. 创建路由实例
  3. 导出路由实例到main.js中进行路由实例挂载(官方文档有)

注意:没有写路由模式是因为默认是hash模式,官方有写。

import Vue from 'vue';
import Router from 'vue-router';

import autoRoutes from './routes';
// 安装路由
Vue.use(Router);
// 创建路由实例,并导出
export default new Router({
    routes: [...autoRoutes]
});

路由表模块文件 modules

比如我这里就一个登录相关模块,首页相关模块。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s3p55NgT-1661415038298)(evernotecid://BE9DEFAA-6BBE-48DD-B45E-993AC7B26341/appyinxiangcom/36368386/ENResource/p358)]

建议模块内容都以数组为准最合适。
其中登录模块文件内容:

// 登录模块
export default [
    {
        path: '/login',
        component: () => import(/* webpackChunkName: "login" */ '@/components/pages/LoginPage'),
        meta: { title: '登录' }
    }
];

另外一个首页相关模块同理。

路由模块自动化导出

手动一个一个导出当然可以,但一旦路由模块多了就不方便管理,因此使用自动化导出模块。

核心方法则是webpack中的 require.context() 。

注意:如果是使用的vite打包工具,则是另外一个方法 import.meta.globEager() 。

实现文件则是在routes下的index.js中。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QCUee30S-1661415038298)(evernotecid://BE9DEFAA-6BBE-48DD-B45E-993AC7B26341/appyinxiangcom/36368386/ENResource/p359)]

实现代码如下:

// 自动归并路由模块
const modulesFiles = require.context('../modules', false, /\.js$/);

const autoRoutes = modulesFiles.keys().reduce((routes, modulePath) => {
    const routeValue = modulesFiles(modulePath).default;
    // 判断路由模块是否为数组,数组使用concat进行拼接,对象使用push推入
    if (Array.isArray(routeValue)) {
        routes = routes.concat(routeValue);
    } else {
        routes.push(routeValue);
    }
    return routes;
}, []);
// 导出路由模块表
export default autoRoutes;

之后就可以在router下的入口文件中引入,配置好的路由表routes, 使用扩展运算符…将routes数组归并进去即可。

注意: 如果有需要注意路由表顺序的情况,建议在路由信息源meta中存入排序号,在自动导入的逻辑里面进行排序引入即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
对于Vue2项目实战毕业设计,我可以给你一些建议。以下是一个可能的项目主题: 主题:基于Vue2的在线购物商城 项目要求: 1. 实现用户注册、登录和个人信息管理功能。 2. 实现商品列表展示、商品搜索和商品详情页功能。 3. 实现购物车功能,用户可以添加商品到购物车、修改购物车中商品数量、删除购物车中的商品等。 4. 实现订单管理功能,用户可以查看订单列表、提交订单、取消订单等。 5. 使用Vue Router实现页面导航和路由跳转。 6. 使用VueX进行全局状态管理,例如购物车商品数量等。 7. 使用第三方库(如Element UI)美化界面,并提供良好的用户体验。 8. 实现前后端数据交互,使用后端API提供数据接口。 项目扩展: 1. 实现商品分类功能,用户可以根据分类查看商品。 2. 实现用户评论和评分功能。 3. 实现用户收藏功能,用户可以收藏喜欢的商品。 4. 实现后台管理系统,管理员可以管理商品、订单等信息。 这只是一个简单的项目主题,你可以根据自己的兴趣和实际情况进行修改和扩展。在实际开发过程中,你可以使用Vue CLI进行项目初始化和搭建,选择合适的插件和工具进行开发。同时,为了提高开发效率和项目质量,建议你使用模块化开发、组件化开发等最佳实践。 祝你顺利完成毕业设计!如果你还有其他问题,可以继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沐沐茶壶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值