原本注册组件方法
import JudgeOperation from './Judgement/JudgeOperation.vue'
import JudgeCondition from './Judgement/JudgeCondition.vue'
import JudgeAssignment from './Judgement/JudgeAssignment.vue'
...
export {
JudgeOperation,
JudgeCondition,
JudgeAssignment,
...
}
新方法
const components = {}
const requireComponent = require.context('.', true, /\.vue$/)
requireComponent.keys().forEach((fileName) => {
const componentOptions = requireComponent(fileName)
const component = componentOptions.default || componentOptions
components[component.name] = component
})
export default components
这段代码的作用是将当前目录中的所有以.vue
结尾的文件作为组件,并将组件对象存储在一个名为components
的常量中。 首先,通过require.context
方法创建了一个上下文,该上下文会自动导入当前目录下所有以.vue
结尾的文件。其中,第一个参数.
表示从当前目录开始查找文件,第二个参数true
表示递归查找子目录,第三个参数/\.vue$/
表示匹配以.vue
结尾的文件。 然后,通过调用requireComponent.keys()
方法获取到所有匹配到的文件路径。requireComponent(fileName)
方法会将每个文件路径作为参数传入,并返回该文件对应的模块对象。 接着,通过判断模块对象中是否存在default
属性,如果存在则将default
属性的值赋给component
变量,否则将整个模块对象赋给component
变量。 最后,将component
对象存储在components
对象中,以组件名作为键。 最后,通过export default
将components
对象导出为默认模块。