2016-12-22 21 views
11

Tại sao công việc này:Named xuất khẩu vs xuất khẩu một đối tượng

const str = 'stuff'; 
export { 
    str 
}; 

Nhưng không này:

export default { 
    str: 'stuff' 
}; 

Tôi muốn nhập nó như sau:

import { str } from 'myLib'; 

Tôi muốn chỉ định giá trị trực tiếp trong quá trình xuất và không yêu cầu phải tạo biến trước khi thực hiện.

Ngoài ra khi tôi cố gắng:

export { 
    str: 'stuff' 
}; 

tôi nhận được lỗi:

SyntaxError: /home/karlm/dev/project/ex.js: Unexpected token, expected , (41:5) 
    39 | 
    40 | export { 
> 41 | str: 'stuff' 
    | ^
    42 | }; 
    43 | 
+0

Đó chỉ là cách thức hoạt động cú pháp xuất khẩu. Nó * trông * giống như sự phá hủy đối tượng, mà tôi đoán là lý do tại sao bạn có thể xuất một đối tượng *, nhưng hai khái niệm cơ bản là khác nhau. Đọc liên quan: http://stackoverflow.com/questions/33524696/es6-destructuring-and-module-imports – CodingIntrigue

+1

Loại liên quan: [ES6 Destructuring and Module import] (http://stackoverflow.com/q/33524696/218196) –

+1

Cũng liên quan: [Javascript (ES6), xuất khẩu const vs export default] (http://stackoverflow.com/q/33611812/218196) –

Trả lời

0

Lý do chính của export statement được sử dụng để xuất khẩu chức năng, các đối tượng hoặc nguyên thủy từ một tập tin nhất định (hoặc mô-đun).

Nhưng bạn cần một số nhận dạng để được xuất (để nó có thể được nhập qua import trong tập lệnh khác).

Bạn chỉ có thể làm:

export const obj = { 
    str: 'stuff' 
}; 

Trong import, bạn sẽ có thể sử dụng cùng một tên obj để tham khảo các giá trị tương ứng.

Và import nó thích:

import { obj } from 'myLib'; 
6

Có hai phong cách của kim ngạch xuất khẩu trong ES6 - xuất khẩu "bình thường", và việc xuất khẩu mặc định. kim ngạch xuất khẩu bình thường lấy dữ liệu nhập với cú pháp như sau:

export const str = 'stuff'; 
// or 
const str = 'stuff'; 
export {str}; 

Mặc định xuất khẩu đi như thế này:

export default const str = 'stuff'; 
// or 
export default { 
    str: 'stuff' 
}; 

Sự khác biệt xuất hiện khi bạn nhập. Với sự đầu tiên, bạn cần phải bao gồm niềng răng:

import {str} from 'myModule'; // 'stuff', from the first example 

Nếu không có niềng răng, nó nhập khẩu xuất khẩu mặc định:

import myModule from 'myModule'; // {str: 'stuff'}, from the second example 
+0

Cập nhật câu hỏi của tôi về phần đầu tiên của bạn, tôi nhận được một lỗi. –

+0

Xin lỗi, xấu của tôi. Đã chỉnh sửa. – Scimonster

Các vấn đề liên quan