Я занимаюсь разработкой проекта с помощью Vue.js и хотел бы применить методологию атомного проектирования, но я хотел бы импортировать компоненты кластеризованным и более умным способом
в настоящее время
import GridLayout from '@/components/bosons/GridLayout.vue'
import LocalStorage from '@/components/bosons/LocalStorage.vue'
import ButtonStyled from '@/components/atoms/ButtonStyled.vue'
import TextLead from '@/components/atoms/TextLead.vue'
import InputSearch from '@/components/atoms/InputSearch.vue'
import SearchForm from '@/components/molecules/SearchForm.vue'
Как я хочу
import {
GridLayout,
LocalStorage
} from '@/components/bosons'
import {
ButtonStyled,
TextLead,
InputSearch
} from '@/components/atoms'
import {
SearchForm
} from '@/components/molecules'
Sulution?Я подумал о том, чтобы поместить index.js в папки
/bosons/index.js
/atoms/index.js
/molecules/index.js
, а index.js импортирует все компоненты и экспортирует их, поэтому это будет что-то вроде
import ButtonStyled from './ButtonStyled.vue'
export default {
ButtonStyled
}
или
export { default as ButtonStyled } from './ButtonStyled.vue'
работает нормально, но при этом все еще статичен, каждый раз, когда вы создаете новый компонент, нужно добавить его index.js, каждый раз, когда вы удаляете компонент, вам также нужноудалите его из index.js
Мне нужно динамически импортировать все компоненты папки
Чем ближе я был к этому,
const req = require.context('./', true, /\.vue$/)
const modules = {}
req.keys().forEach(fileName => {
const componentName = fileName.replace(/^.+\/([^/]+)\.vue/, '$1')
modules[componentName] = req(fileName).default
})
export const { ButtonStyled, TextLead } = modules
, но я все еще определяюимена переменных экспорта статически, мне нужно определить динамику на основе компонентов внутри папки
ПРИМЕЧАНИЕ: я не могу использовать
export default modules
, если я использую приведенный выше фрагмент кода, я не будувозможность импортировать так, как мне нужно, а именно:
import { ButtonStyled } from "@/components/atoms"