2016-07-12 23 views
42

Tôi đang cố gắng tạo mô-đun xuất nhiều lớp ES6. Hãy nói rằng tôi có cấu trúc thư mục sau:Xuất nhiều lớp trong mô-đun ES6

my/ 
└── module/ 
    ├── Foo.js 
    ├── Bar.js 
    └── index.js 

Foo.jsBar.js từng xuất mặc định lớp ES6:

// Foo.js 
export default class Foo { 
    // class definition 
} 

// Bar.js 
export default class Bar { 
    // class definition 
} 

Tôi hiện có của tôi index.js thiết lập như thế này:

import Foo from './Foo'; 
import Bar from './Bar'; 

export default { 
    Foo, 
    Bar, 
} 

Tuy nhiên, tôi không thể nhập. Tôi muốn có thể thực hiện việc này nhưng không tìm thấy lớp học:

import {Foo, Bar} from 'my/module'; 

Cách chính xác để xuất nhiều lớp trong mô-đun ES6 là gì?

+1

chỉ sử dụng 'export' mà không có sự mặc định – webdeb

+0

Bạn chỉ có thể có một 'default' xuất khẩu. Hãy tưởng tượng nếu ai đó cố gắng làm 'nhập SomeClass từ 'my/module''. Thao tác này sẽ tự động nhập mô-đun 'mặc định' từ đường dẫn đó. Nếu bạn có nhiều lần xuất mặc định ở đó, làm cách nào để biết nó sẽ nhập khẩu nào? – saadq

Trả lời

81

Hãy thử điều này trong mã của bạn:

import Foo from './Foo'; 
import Bar from './Bar'; 

export { // without default 
    Foo, 
    Bar, 
} 

Btw, bạn cũng có thể làm theo cách này:

//bundle.js 
export Foo from './Foo' 
export Bar from './Bar' 

//and import somewhere.. 
import { Foo, Bar } from './bundle' 

Sử dụng 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'; 

Sự khác biệt để export default

.210

là bạn có thể xuất khẩu một cái gì đó, và áp dụng cái tên mà bạn nhập nó

// export default 
const Func =() {} 
export default Func; 

// import it 
import Foo from './func' 
+0

Tôi gặp lỗi 'Mã thông báo không mong đợi' khi tạo 'xuất Foo từ' ./Foo '; xuất khẩu Bar từ './Bar'' – inostia

+0

@inostia lưu ý, đây là cú pháp ES6, bạn có thể cần "babel" để hỗ trợ nó – webdeb

+0

Tôi đang sử dụng babel. Tôi đã nhận được lỗi khi biên dịch với webpack. Tôi nghĩ rằng tôi cần phải làm một cái gì đó như 'export {default as Foo} từ './Foo';'. Tôi đã thấy ở nơi khác – inostia

6

Hope this helps:

// 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(); 
0

@ câu trả lời webdeb đã không làm việc cho tôi, tôi nhấn một lỗi unexpected token khi biên dịch ES6 với Babel, hãy đặt tên mặc định là xuất khẩu.

này đã làm việc cho tôi, tuy nhiên:

// 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' 
Các vấn đề liên quan