Экспорт нескольких классов в модули ES6
Я пытаюсь создать модуль, который экспортирует несколько классов ES6. Скажем, у меня есть следующая структура каталогов:
my/
└── module/
├── Foo.js
├── Bar.js
└── index.js
Foo.js
и Bar.js
каждый экспортирует класс ES6 по умолчанию:
// Foo.js
export default class Foo {
// class definition
}
// Bar.js
export default class Bar {
// class definition
}
В настоящее время у меня установлен мой index.js
следующим образом:
import Foo from './Foo';
import Bar from './Bar';
export default {
Foo,
Bar,
}
Однако я не могу импортировать. Я хочу иметь возможность сделать это, но классы не найдены:
import {Foo, Bar} from 'my/module';
Каков правильный способ экспорта нескольких классов в модуль ES6?
Ответы
Ответ 1
Попробуйте это в своем коде:
import Foo from './Foo';
import Bar from './Bar';
export { // without default
Foo,
Bar,
}
Btw, вы также можете сделать это следующим образом:
//bundle.js
export Foo from './Foo'
export Bar from './Bar'
//and import somewhere..
import { Foo, Bar } from './bundle'
Используя export
export const MyFunction = () => {}
export const MyFunction2 = () => {}
const Var = 1;
const Var2 = 2;
export {
Var, Var2
}
// Then import it this way
import {MyFunction, MyFunction2, Var, Var2 } from './foo-bar-baz';
Разница в export default
заключается в том, что вы можете что-то экспортировать и использовать имя, в которое вы его импортируете
// export default
const Func = () {}
export default Func;
// import it
import Foo from './func'
Ответ 2
Надеюсь, что это поможет:
// Export (file name: my-functions.js)
export const MyFunction1 = () => {}
export const MyFunction2 = () => {}
export const MyFunction3 = () => {}
// Import
import * as myFns from "./my-functions";
myFns.MyFunction1();
myFns.MyFunction2();
myFns.MyFunction3();