Я разрабатываю проект с 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'
Суждение? Я подумал о том, чтобы поместить index.js в папки
/bosons/index.js
/atoms/index.js
/molecules/index.js
и index.js будет импортировать все компоненты и экспортировать, поэтому это будет что-то вроде
import ButtonStyled from './ButtonStyled.vue'
export default {
ButtonStyled
}
or
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"
but is not feasible, every component created or deleted the index.js needs to be changed
- что вы имеете в виду под словом «изменилось»? Я только что проверил это с помощью решенияindex.js
, и оно отлично сработало. - person Matt Oestreich   schedule 25.04.2019