Próbuję utworzyć moduł, który eksportuje wiele klas ES6. Powiedzmy, że mam następującą strukturę katalogów:
my/
└── module/
├── Foo.js
├── Bar.js
└── index.js
Foo.js
i Bar.js
każdy eksportuje domyślną klasę ES6:
// Foo.js
export default class Foo {
// class definition
}
// Bar.js
export default class Bar {
// class definition
}
Obecnie mam index.js
taką konfigurację:
import Foo from './Foo';
import Bar from './Bar';
export default {
Foo,
Bar,
}
Jednak nie mogę zaimportować. Chcę móc to zrobić, ale nie znaleziono zajęć:
import {Foo, Bar} from 'my/module';
Jaki jest prawidłowy sposób eksportowania wielu klas w module ES6?
javascript
module
export
ecmascript-6
babel
otaczający
źródło
źródło
export
bez wartości domyślnejdefault
eksport. Wyobraź sobie, że ktoś próbowałby to zrobićimport SomeClass from 'my/module'
. Spowoduje to automatyczne zaimportowaniedefault
modułu z tej ścieżki. Gdybyś miał tam wiele domyślnych eksportów, skąd wiedziałoby, który z nich zaimportować?Odpowiedzi:
Spróbuj tego w swoim kodzie:
Przy okazji możesz to również zrobić w ten sposób:
Za pomocą
export
Różnica
export default
polega na tym, że możesz coś wyeksportować i zastosować nazwę tam, gdzie to importujesz:źródło
Unexpected token
błąd podczas budowaniaexport Foo from './Foo'; export Bar from './Bar'
export { default as Foo } from './Foo';
. Widziałem to gdzie indziejexport { default as Foo } from './Foo';
był wymagany do faktycznego wyeksportowania.Mam nadzieję że to pomoże:
źródło
Odpowiedź @ webdeb nie działa dla mnie, napotkałem
unexpected token
błąd podczas kompilowania ES6 z Babel, wykonując nazwane domyślne eksporty.U mnie to jednak zadziałało:
źródło
źródło
Aby wyeksportować instancje klas, możesz użyć następującej składni:
źródło