vue

Vite 2 + Vue 3 实现批量导入模块

2021-08-29  本文已影响0人  AizawaSayo

当项目使用 webpack 作为构建工具时,批量导入可以用require.context实现 ➡️ 【利用 webpack 的 require.context 自动注册 vue 全局组件】

Vite 2 则需要通过import.meta.globimport.meta.globEager实现同样的功能。➡️ 📃 Vite 2 Glob 导入文档

我们以 Vuex 4 批量导入store模块为例。

我的store目录结构

import.meta.globEager直接引入

📃src/store/index.js

import { createStore } from 'vuex'
import getters from './getters'

// 直接引入所有的模块
const modulesFiles = import.meta.globEager('./modules/**/*.js')
const modules = {}
for (const key in modulesFiles) {
  modules[key.replace(/(\.\/modules\/|\.js)/g, '')] = modulesFiles[key].default
}

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

const store = createStore({
  modules,
  getters,
})

export default store

import.meta.glob动态引入

📃src/store/index.js:只贴有差异的部分

// 动态引入所有的模块
const modulesFiles = import.meta.glob('./modules/**/*.js')

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

ℹ️ tips:Glob 匹配是使用 fast-glob 来实现的 —— 阅读它的文档来查阅 支持的 Glob 模式

上一篇 下一篇

猜你喜欢

热点阅读