vue 动态引入某个文件夹下所有的文件

网上常见的获取某个文件下的所有vue文件 都是通过下面方法获取的

import Vue from 'vue'
 
const files = require.context('./files', true, /\.vue$/)
const lib = {
 
}
 
//key是相对路径名
files.keys().forEach(key => {
    
    const name = files(key).default.name
    lib[name] = Vue.extend(files(key).default)
})
 
export default lib

现在我想把这个方法封装一下,此时希望把'./files' 配置为动态c参数,通过参数传进来。但是node.js require方法不支持传入动态变量。各位大神有遇到这种问题么?或者有没有不用require.context()方法也可以实现功能的方法呢?

阅读 14.1k
4 个回答

require 是运行时加载模块,也就是具有动态加载功能。也就是说下面的代码是对的:

const path = `./${ fileName }`;
const moduleName = require(path);

require.context(path)webpack 的一个方法,它的 path 本身就是形参,你把动态c参数直接替换掉 ./files 就行。
require.context 的文档链接

新手上路,请多包涵

我感觉你是不是得换个思路? 动态引入文件,其实就包含了不确定文件的情况。为什么你的目录也不确定?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题