2016-12-22 12 views
11

Dlaczego to działa:Nazwany eksport vs eksportowania obiektu

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

ale nie tym:

export default { 
    str: 'stuff' 
}; 

Chciałbym importować je jako następujące:

import { str } from 'myLib'; 

Chciałbym przypisać wartość bezpośrednio w eksporcie i nie wymagać tworzenia zmiennej przed rozdaniem.

Również gdy próbuję:

export { 
    str: 'stuff' 
}; 

pojawia się błąd:

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

czyli po prostu jak działa składnia eksport. Wygląda * jak destrukturyzacja obiektu, co, jak sądzę, jest powodem, dla którego spodziewałeś się wyeksportować * obiekt *, ale dwa pojęcia są zasadniczo różne. Powiązane uwagi: http://stackoverflow.com/questions/33524696/es6-destructuring-and-module-imports – CodingIntrigue

+1

Powiązane informacje: [ES6 Destructuring and Module import] (http://stackoverflow.com/q/33524696/218196) –

+1

Związany również: [Javascript (ES6), eksport jako stały kontra eksport domyślny] (http://stackoverflow.com/q/33611812/218196) –

Odpowiedz

0

Głównym powodem export statement ma być używany do eksportowania funkcji, obiektów lub prymitywów z danego pliku (lub moduł).

Ale potrzebny jest identyfikator do wyeksportowania (aby można go było zaimportować przez import w innym skrypcie).

Można po prostu zrobić:

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

Podczas import, będziesz w stanie używać tej samej nazwy obj odnieść się do odpowiedniej wartości.

i zaimportować go lubię:

import { obj } from 'myLib'; 
6

Istnieją dwa rodzaje eksportu w ES6 - „normalne” eksport, a domyślny eksport. Normalne eksport uzyskać eksportowane ze składnią tak:

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

eksport domyślne iść tak:

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

Różnica pojawia się podczas importowania. Z pierwszego, trzeba podać szelki:

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

bez nawiasów, importuje domyślny wywóz:

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

Zaktualizowałam moje pytanie dotyczące twojej pierwszej części, otrzymuję błąd. –

+0

Przepraszam, moje złe. Edytowane. – Scimonster