Экспорт нескольких классов в модули 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 в модуль?
4 ответа:
попробуйте это в ваш код:
import Foo from './Foo'; import Bar from './Bar'; export { // without default Foo, Bar, }
Кстати, вы также можете сделать это таким образом:
//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'
надеюсь, это поможет:
// 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(); // OR Import it as Destructured import { MyFunction1, MyFunction2 } from "./my-functions"; // AND you can use it like below with brackets (Parentheses) if it's a function // AND without brackets if it's not function (eg. variables, Objects or Arrays) MyFunction1(); MyFunction2();
ответ @ webdeb не сработал для меня, я ударил
unexpected token
ошибка при компиляции ES6 с Babel, выполнение именованного экспорта по умолчанию.это сработало для меня, однако:
// Foo.js export default Foo ... // bundle.js export { default as Foo } from './Foo' export { default as Bar } from './Bar' ... // and import somewhere.. import { Foo, Bar } from './bundle'
для экспорта экземпляров классов можно использовать следующий синтаксис:
// export index.js const Foo = require('./my/module/foo'); const Bar = require('./my/module/bar'); module.exports = { Foo : new Foo(), Bar : new Bar() }; // import and run method const {Foo,Bar} = require('module_name'); Foo.test();