2015-12-23 16 views
8

Ho due moduli JavaScript che assomiglia a questo:Esporta un modulo importato

// inner/mod.js 
export function myFunc() { 
    // ... 
} 

// mod.js 
import * as inner from "./inner/mod"; 

vorrei esportare myFunc da mod.js. Come posso fare questo?

MODIFICA: Devo chiarire che la funzione viene esportata come previsto da inner/mod.js ma voglio anche esportare la funzione dall'esterno mod.js.

Per coloro che chiedono chiarimenti, vorrei raggiungere questo obiettivo:

// SomeOtherFile.js 
import * as mod from "mod"; // NOT inner/mod 

mod.myFunc(); 
+0

Hai ricevuto un errore? – Enijar

+0

No Non ricevo un errore. Ma non sto esportando nulla da 'mod'. Si noti che non ci sono dichiarazioni di esportazione. – Max

+0

Puoi approfondire come ti aspetti di usarlo altrove? Non sono chiaro dalla tua domanda che cosa stai cercando di raggiungere .. – azium

risposta

17

Credo che quello che stai cercando è

export * from './inner/mod'; 

che vi riesportazioni tutte le esportazioni di ./inner/mod. Lo spec ha in realtà una tabella molto carina, che elenca tutte le possibili varianti export e import.

+0

L'unico modo che sembra funzionare è 'import mod from" ./inner/mod "; export {mod} '. Usando 'export * da './inner/mod';' sembra non funzionare. – Max

+0

In realtà, funziona. Tuttavia, non funziona se 'inner/mod' esporta una funzione predefinita. – Max

+3

Sì, coprirà solo le esportazioni nominate. Puoi esportare esplicitamente l'esportazione predefinita con 'export {default} da './inner/mod';'. –

7
// inner/mod.js 
export function myFunc() { 
    // ... 
} 

// mod.js 
import { myFunc } from "./inner/mod"; 
export { myFunc }; 

Cercate di essere esplicito in ciò che si importa, meno il meglio, a causa di questo ho cambiato l'importazione in mod.js. Se si importa do *, si definisce una variabile che sarà l'oggetto di tutte le esportazioni di nomi da quel modulo importato.

riesportare è lo stesso di creare qualcosa di proprio ed esportare.

+0

È possibile esportare l'intero oggetto? Voglio avere un modulo 'index' che esporti tutti i sottomoduli. – Max

+0

Ow sì, è possibile esportare oggetti statici, oggetti, array, stringhe, numeri ecc. Ciò che accade è che tutto ciò che viene esportato viene inserito in un oggetto valore-chiave. La chiave è il nome dell'esportazione, il valore la ... la cosa che stai esportando, ovviamente .. Non puoi esportare le espressioni. – Norbert

+0

Puoi esportare tutte le cose che vuoi. – Norbert

Problemi correlati