2016-04-12 14 views
6

Ich versuche, benannte und Standard-Exporte zu verstehen. Ich habe eine scheinbar grundlegende Anforderung, die ich nicht verstehe.ES6 Standard und benannte Exporte

Ich möchte beide in der Lage sein zu importieren:

//app.js 
import Mod from './my-module' 
import { funcA, funcB } from './my-module' 

console.log('A', Mod.funcA(), funcA()); // A a a 
console.log('B', Mod.funcB(), funcB()); // A a a 

Wenn ich versuche, der nächste Weg, dies zu tun, ich bekommen ist folgende:

//my-module.js 
export function funcA() { return 'a'; }; 
export function funcB() { return 'b'; }; 

export default {funcA, funcB} 

Mein Problem ist, dass ich don Ich möchte alle Funktionen im Standardexport neu indizieren. Ich möchte nur meine Funktionen definieren und dann sicherstellen, dass sie exportiert werden, damit ich sie auf jede Weise verwenden kann.

Vorschläge? Oder muss ich import * as Mod from './my-module'; verwenden?

Antwort

7

Sie können den Standardexport weglassen und den Import als Syntax verwenden:

//app.js 
import * as Mod from './my-module' 
import { funcA, funcB } from './my-module' 

console.log('A', Mod.funcA(), funcA()); // A a a 
console.log('B', Mod.funcB(), funcB()); // B b b 
//my-module.js 
export function funcA() { return 'a'; }; 
export function funcB() { return 'b'; }; 
+0

So ist der 'Import Mod aus.‘/My-module'' ist nicht auf die oben gefragt verwendet werden? – mraxus

+2

Es * kann * wie oben verwendet werden, aber ich sehe keinen Grund für die Vervielfältigung von 'funcA' /' funcB' im Standard-Export – CodingIntrigue

5

Import Inhalt einmal das gesamte Modul * as name:

import * as Mod from './my-module'; 

sie dann zuweisen Konstanten Destrukturierung zu trennen:

const { funcA, funcB } = Mod; 

Für den Export verwenden nur die genannten Exporte:

export function funcA() { return 'a'; }; 
export function funcB() { return 'b'; }; 
Verwandte Themen