2015-12-31 1 views
6

Voglio importare modulo diverso per il mio modulo nello script ECMA 6. Ad esempio:Come importare i moduli in ecmascript-6?

import rest from 'rest'; 

export function client() { 

    // some logic 

} 

Se cambierò l'istruzione import al classico:

var rest = require('rest'); 

tutto funziona bene. Qualche idea?

+0

'foo importazione da ...' funziona solo se il modulo importato ha un export di default. Tutto ciò che devi sapere dovrebbe essere contenuto in https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import. –

+0

Grazie Felix, avevi ragione! –

risposta

1

Questa è una risposta per la mia domanda, ma se volete sapere come importare altri file si prega di r efer alla risposta fornita dall'utente @mido o per esempio controllare questa pagina: http://www.2ality.com/2014/09/es6-modules-final.html

Quindi il commento di @Felix King mi ha indirizzato alla risposta giusta. Come suggerito Felix, il modulo resto non ha funzione di default di esportazione e quindi dovrebbe essere importato come quella:

import * as rest from 'rest'; 

Quindi dipende da un modulo, come è scritto. Per esempio modulo "mimo" intercettore che è inclusa nel resto può essere incluso di:

import mime from 'rest/interceptor/mime'; 
1

Io non sono un esperto, ma import è simile a require in molti modi, ma la differenza chiave sono:

  • è possibile importare gli elementi selettivi utilizzando import (indovinate questo è vicino a Python), ma con require, si esporta solo un singolo modulo come spazio dei nomi, tutto il resto è sotto moduli.

  • secondo è, require è più di di node.js Thingy (anche se è possibile portarlo in browser usando browserify) ,, ma import è ormai una caratteristica nativa di ES6, vale a dire i browser che supportano ES6, import avrebbe funzionato

Esempio da lukehoban di es6features per rinforzare il mio primo punto:

// lib/math.js 
export function sum(x, y) { 
    return x + y; 
} 
export var pi = 3.141593; 

// app.js 
import * as math from "lib/math"; 
alert("2π = " + math.sum(math.pi, math.pi)); 

// otherApp.js 
import {sum, pi} from "lib/math"; 
alert("2π = " + sum(pi, pi)); 

//Some additional features include export default and export *: 

// lib/mathplusplus.js 
export * from "lib/math"; 
export var e = 2.71828182846; 
export default function(x) { 
    return Math.log(x); 
} 

// app.js 
import ln, {pi, e} from "lib/mathplusplus"; 
alert("2π = " + ln(e)*pi*2); 
+0

Sì, lo so che funziona così, ma il mio problema è che voglio usare import in lib/math.js (nel tuo esempio) .. Sto usando le importazioni in altri file, ma in altri file ho classi. Qui Esiste una singola funzione che viene esportata e vorrei utilizzare altri moduli in quella singola funzione. Questo non funziona tristemente. –