2015-12-31 12 views
6

chcę zaimportować inny moduł do mojego modułu w skrypcie ECMA 6. Na przykład:Jak importować moduły w ecmascript-6?

import rest from 'rest'; 

export function client() { 

    // some logic 

} 

Jeśli będę zmieniać instrukcję import do klasycznego:

var rest = require('rest'); 

wszystko działa poprawnie. Jakieś pomysły?

+0

'foo import z ...' działa tylko wtedy, gdy importowany moduł ma domyślny eksport. Wszystko, co musisz wiedzieć, powinno znajdować się w https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import. –

+0

Dziękuję Felix, miałeś rację! –

Odpowiedz

1

To jest odpowiedź na moje pytanie, ale jeśli chcesz dowiedzieć się, jak importować inne pliki prosimy R Podaj odpowiedź udzieloną przez użytkownika @mido lub na przykład sprawdź tę stronę: http://www.2ality.com/2014/09/es6-modules-final.html

Tak więc komentarz z @Felix King skierował mnie do właściwej odpowiedzi. Jak sugeruje Felix, moduł reszta nie posiada domyślnej funkcji eksportu tak powinno być importowane tak:

import * as rest from 'rest'; 

Więc to zależy od modułu, jak to jest napisane. Na przykład moduł „mim” przechwytujących, które wliczone jest w spoczynku może być włączone przez:

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

Nie jestem ekspertem, ale import jest podobna do require na wiele sposobów, ale kluczowa różnica to:

  • można importować selektywnych przedmioty używając import (przypuszczam to blisko python), ale z require, eksportujesz tylko jeden moduł jako przestrzeń nazw, wszystko inne to jego podmoduły.

  • drugie, require jest bardziej od node.js cienias (choć można doprowadzić go do przeglądarki za pomocą browserify) ,, ale import jest rodowitym cechą ES6, czyli przeglądarki, które obsługują ES6, import będzie działać

Przykład z lukehoban na es6features aby wzmacniać swój pierwszy punkt:

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

Tak, wiem, że to działa, ale moim problemem jest to, że chcę użyć importu w lib/math.js (w twoim przykładzie) .. Używam importu w innych plikach, ale w innych plikach mam klasy. Tutaj jest wyeksportowana jedna funkcja i chciałbym użyć innych modułów w tej jednej funkcji. To nie działa ze smutkiem. –