vite glob-import 官方文档

1.引入库

以 Vuex4+ 批量导入store模块为例
假设有如下目录结构

在这里插入图片描述

代码:

import { createStore } from 'vuex'
导入模块
const files = import.meta.glob('./module/*.js')
或者
const files = import.meta.globEager('./module/*.js')

注意,路径需为以 ./ 开头)或绝对路径(以 / 开头,相对于项目根目录解析

import.meta.glob 为过动态导入,构建时,会分离为独立的 chunk
import.meta.globEager 为直接引入
两者在使用上也有不同的区别

1.

const modules = {}
for (const key in files) {
    files[key]().then(res=>{
        modules[key.replace(/(\.\/module\/|\.js)/g, '')] = res.default
    })
}

Object.keys(modules).forEach(item => {
    modules[item]['namespaced'] = true
})

export default createStore({
    modules,
})

2.

const modules = {}
for (const key in files) {
    modules[key.replace(/(\.\/module\/|\.js)/g, '')] = files[key].default
}

Object.keys(modules).forEach(item => {
    modules[item]['namespaced'] = true
})

export default createStore({
    modules,
})

如果使用异步导入的方式,会导致一些需要被首先应用的数据无法被获取到,可以根据实际需求,选择不同的导入方式


总结

1.引用createStore
2.import.meta.glob 或 import.meta.globEager 导入需要导入的文件,注意路径匹配
3.遍历files,根据导入方式做不同的处理
4.方法不限于vuex的模块导入,这里只是简单的例子

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐