2016-01-07 17 views
9

Próbuję eksportować więcej niż jedną zmienną w ES6:Eksportuj więcej niż jedną zmienną w ES6?

exports.js

var TestObject = Parse.Object.extend('TestObject') 
var Post = Parse.Object.extend('Post') 

export default TestObject 
export Post 

main.js:

import TestObject from '../store' 
import Post from '../store' 

var testObject = new TestObject() // use Post in the same way 
testObject.save(json).then(object => { 
    console.log('yay! it worked', object) 
}) 

Rozumiem, że istnieje tylko jedna wartość domyślna więc używał tylko default w pierwszym elemencie.

Jednak ten komunikat o błędzie:

Module build failed: SyntaxError: /home/alex/node/my-project/src/store/index.js: Unexpected token (9:7) 
    7 | 
    8 | export default TestObject 
> 9 | export Post 

Może robię to w niewłaściwy sposób?

+0

Tylko dzikie przypuszczenie ale próbowałeś dodanie średnik na końcu pierwszej linii 'export'? – Pointy

+0

@Pointy Próbowałem tego. Ten sam błąd. – alexchenco

Odpowiedz

21

To nie jest poprawna składnia. Można zrobić

export {Post} 

lub nawet tylko

export var Post = Parse.Object.extend('Post') 

lub skrócić cały plik do

export default Parse.Object.extend('TestObject') 
export var Post = Parse.Object.extend('Post') 

importuje również nieprawidłowe, będziemy chcieli zrobić

import TestObject, {Post} from '../store' 

To jest, jeśli naprawdę chcesz singiel domyślny eksport i oddzielny nazwany eksport. Możesz także utworzyć dwa nazwane eksporty i nie mieć wartości domyślnych, np.

export var TestObject = Parse.Object.extend('TestObject'), 
    Post = Parse.Object.extend('Post') 

i

import {TestObject, Post} from '../store' 
+0

Jestem ciekawa, jaką różnicę sprawiają 'export default' i' export var'? – alexchenco

+3

Domyślnym eksportem jest ten, który uzyskujesz, gdy "importujesz foo z"./Module'', jeśli użyjesz 'export var SomeThing', którego potrzebujesz zaimportować po nazwie, np. 'import {SomeThing} from './module';' – loganfsmyth

+0

Ustawieniem domyślnym staje się importowany obiekt bez dekompozycji importowanego obiektu. –

6

Można eksportować wiele obiektów, takich jak ten w ES6

var TestObject = Parse.Object.extend('TestObject') 
var Post = Parse.Object.extend('Post') 

export { 
    TestObject, 
    Post 
} 

Następnie podczas importowania to zrobić tak:

import { TestObject, Post } from './your-file'; 

Można przeczytać o import i export tutaj.

+0

Dokonana zmiana unieważniła moją odpowiedź. Można go eksportować bez podawania nazwy klucza w ES6. –

+0

Och, rozumiem. Więc słowo kluczowe "default" nie jest już wymagane? – alexchenco

+1

@MarioTacke Tak, nie mam nic, nie mam pojęcia, dlaczego ta zmiana została zaakceptowana. – loganfsmyth

0

czy pasuje do Twojego przypadku użycia można dokonać non-default eksport właściwością domyślną eksport. Uważam, że stanowi to czystszy kod.

const TestObject = Parse.Object.extend('TestObject'); 
TestObject.Post = Parse.Object.extend('Post'); 

export default TestObject; 

Następnie podczas importowania wystarczy zaimportować domyślnie:

import TestObject from './your-file.js'; 

Potem go używać tak:

TestObject.Post({some, args}); 
Powiązane problemy