vue-router的模块化开发

在开发过程中,我们所有的router肯定不能放在index.js里,传统方案哪怕用各个js细分了各模块,还是需要在index.js里注册一下,这样很容易与他人代码冲突。这里我将提供我的思路,有什么不成熟的地方还望及时沟通。
以下便是项目结构:

丨- router
    丨- modules
           - item.js
    - index.js

其中最主要的就是index.js的配置:

import Vue from 'vue'
import VueRouter from 'vue-router'
Vue.use(VueRouter)  // use 放在这能为 main.js 省俩行代码
// 以下则是获取 modules 下所有的 router 模块,适用于Vue2
const routerArr = require.context('./modules', true, /.js$/)
let routerArrNew = []
routerArr.keys().forEach(key => {
  routerArrNew.push(routerArr(key).default)
})

// Vue3弃用了require.context,所以我们使用:
const routerArr = import.meta.globEager('./modules/*.js')
let routerArrNew = Object.values(routerArr).map(el=>el.default[0])

const routes = [
  {
    path: '*',
    redirect: '/'
  },
  ...routerArrNew
]
const router = new VueRouter({
  routes
})
export default router

以上特殊公共路由可直接在routes里添加。
需要注意当前使用vue版本是否为vue3,vue3是不支持require.context的,需要格外注意。
此外,import.meta.globEager无法遍历子目录,可能需要更改编写习惯。

以下便是modules内的路由编写方法:

const routes = [
  {
    path: '/index/demo',
    title: '测试',
    component: () => import("@/view/home/home")
  }
]
export default routes

就是像以前一样正常的使用就可以了,如需要增加其他参数也可以主动添加。

如果有更漂亮的写法欢迎来讨论,让我们一起有条不紊的持续进步。
喜欢的话不妨点个小小的赞与关注,您的赞与关注将是我源源不断的前进动力。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值