2016-04-12 41 views
6

Adlandırılmış ve varsayılan dışa aktarmayı anlamaya çalışıyorum. Nasıl kurulduğunu anlamadığım temel bir gereksinim var. Aşağıdaki ben çalıştığınızdaES6 varsayılanı ve adlandırılmış dışa aktarma

//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 

, bunu yapmanın en yakın yolu ben geçmektir:

ben hem ithal etmek isterler

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

export default {funcA, funcB} 

Benim sorun olduğunu ı don Varsayılan dışa aktarmada her bir fonksiyonu yeniden dizinlemek istemiyorum. Sadece işlevlerimi tanımlamak istiyorum ve sonra da bunların dışa aktarıldığından emin olmak istiyorum, böylece onları her iki şekilde de kullanabilirim.

Öneriler? Yoksa import * as Mod from './my-module'; mu kullanmalıyım? bir kere * as name kullanarak

cevap

7

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

Sonra strüktür kullanarak sabitleri ayırmak için onları atamak Varsayılan dışa aktarmayı çıkartabilir ve içe aktarmayı sözdizimi olarak kullanabilirsiniz:

//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 'ithalat Mod’./My-module'' yukarıda sorulan bir şekilde kullanılmak üzere değil? – mraxus

+2

Yukarıdaki gibi * kullanılabilir *, ancak varsayılan ihracatta 'funcA' /' funcB' yinelenmesi için bir neden göremiyorum – CodingIntrigue

5

İthalat tüm modülün içeriği: İhracat için

const { funcA, funcB } = Mod; 

sadece kullanmak adlı ihracat:

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