Я работаю над проектом vue / nuxt.js и хотел бы применить методологию атомарного проектирования, я хотел бы импортировать компоненты кластеризованным и более умным способом.
в настоящее время
import ButtonStyled from '@/components/atoms/ButtonStyled.vue'
import TextLead from '@/components/atoms/TextLead.vue'
import InputSearch from '@/components/atoms/InputSearch.vue'
Как я желаю
import {
ButtonStyled,
TextLead,
InputSearch
} from '@/components/atoms'
Решение
index.js
в папке atoms
отлично работает (ES5)
// ES5 works ?
const req = require.context('.', false, /\.vue$/)
req.keys().forEach(fileName => {
const componentName = fileName.replace(/^.+\/([^/]+)\.vue/, '$1')
module.exports[componentName] = req(fileName).default
})
// ES6 does not work ?
// ERROR: Module build failed, 'import' and 'export' may only appear at the top level
const req = require.context('.', false, /\.vue$/)
req.keys().forEach(fileName => {
const componentName = fileName.replace(/^.+\/([^/]+)\.vue/, '$1')
export const [componentName] = req(fileName).default
})
nuxt use ES6
NOTE
: я не могу экспортировать объект, потому что не могу использовать import {ButtonStyled}
, или мне придется деструктурировать объект после его импорта
Мне нужно экспортировать, чтобы я мог использовать
import { ButtonStyled } from '@/components/atoms'
Мне нужно экспортировать имя каждого компонента в папку
Будем благодарны за любые советы, информацию или предложения.
Заранее спасибо.