一个webpack的api,经过执行require.context函数获取一个特定的上下文,主要用来实现自动化导入模块,在前端工程中,若是遇到从一个文件夹引入不少模块的状况,能够使用这个api,它会遍历文件夹中的指定文件,而后自动导入,使得不须要每次显式的调用import导入模块前端
require.context函数接受三个参数vue
语法: require.context(directory, useSubdirectories = false, regExp = /^.//);
复制代码
在components下的index.js中require.context('./common', false, /\.vue$/);
复制代码
咱们注册组件是须要Vue.component(组件名,options)
options是个对象
{
data:function(){},
template:'<button>点击计算点击次数</button>'
}
复制代码
// import Vue from "vue";
function changeStr(str) {
//首字母大写
return str.charAt(0).toUpperCase() + str.slice(1);
}
//找到上一级common目录下的.vue结尾的全部文件
const requireComponent = require.context("./common", false, /\.vue$/);
console.log(requireComponent.keys());
//["./child1.vue", "./child2.vue"]
const install = (Vue) => {
requireComponent.keys().forEach((fileName) => {
let config = requireComponent(fileName);
let componentName = changeStr(
fileName.replace(/^\.\//, "").replace(/\.\w+$/, "")
);
console.log(config);
// console.log(componentName); //Child1 Child2
Vue.component(componentName, config.default || config);
});
};
export default {
install,
};
复制代码