vuex引入多个模块简写方法

本文介绍了一种在Vue项目中使用Webpack的require.context方法自动导入Vuex模块的技术,避免手动导入模块导致遗漏。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在使用Vuex对vue项目进行状态管理时,我们的Vuex主文件通常是这个样子的:

import Vue from 'vue'
import Vuex from 'vuex'
import A from './modules/a'
import B from './modules/b'
Vue.use(Vuex)
export default new Vuex.Store({
    modules: {
        A,
        B
    }
})
复制代码

随着项目变得越来越大,我们导入的文件就会越来越多,而且有时候在modules文件夹下添加了文件后,会忘了在主文件中添加进去;有没有自动导入的方法呢?

在webpack中,有提到一个方法require.context;可以使用此方法来创建自己的(模块)上下文,它接收三个参数:

  • 要搜索的文件夹目录
  • 是否还应该搜索它的子目录
  • 以及一个匹配文件的正则表达式

例如:

require.context('./test', false, /\.test\.js$/)
// (创建了)一个包含了 test 文件夹(不包含子目录)
// 下面的、所有文件名以 `.test.js` 结尾的
// 能被 require 请求到的文件的上下文。
复制代码

详细请查看require.context的官方文档

我们可以使用此方法来修改我们的代码;修改后如下:

import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
let ms = require.context('./modules', false, /\.js$/)
let modules = {}
ms.keys().forEach(k => {
    let n = k.substring(2, k.length - 3)
    modules[n] = ms(k).default
})
export default new Vuex.Store({
    modules
})
复制代码

此时,在modules中添加的所有以.js后缀结尾的文件都会被自动导入进来了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值