Вы все еще представляете такие высокочастотные компоненты?
Используйте require.context для автоматизации проектирования переднего плана и быстрого применения его к проекту.
что такое require.context?
API веб-пакета, который получает определенный контекст, выполняя функцию require.context, в основном используется для автоматического импорта модулей.В фронтенд-проекте, если вы столкнулись с ситуацией, когда из папки импортируется много модулей, вы можете использовать это api, он будет перемещаться по указанным файлам в папке, а затем импортировать их автоматически, поэтому нет необходимости явно вызывать импорт каждый раз для импорта модуля.
Проанализируйте require.context
Функция require.context принимает три параметра.
- directory {String} - путь для чтения файла из
- useSubdirectories {Boolean} - Обходить ли подкаталоги файлов
- regExp {RegExp} - регулярное выражение для соответствия файлу
语法: require.context(directory, useSubdirectories = false, regExp = /^.//);
在components下的index.js中require.context('./common', false, /\.vue$/);
Вы можете видеть, что выполнение метода keys() возвращает массив имен файлов совпадающих файлов.
我们注册组件是需要Vue.component(组件名,options)
options是个对象
{
data:function(){},
template:'<button>点击计算点击次数</button>'
}
Описание changeStr делает первую букву строки заглавной (регистрация компонента обычно делает первую букву заглавной)// импортируем демо из '@/components/demo'
где пусть config = requireComponent(fileName) доставит вас
мы в main.js
Наконец, компонент глобальной инъекции завершен.
// 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,
};