2016-02-27 9 views
34

Chciałbym następujące ale z jednej linii, jeśli to możliwe:ES6, w jaki sposób można wyeksportować importowany moduł w jednym wierszu?

  • import Module from './Module/Module;
  • export Module;

Próbowałem następujących ale nie wydaje się działać:

  • export Module from './Module/Module;
+0

Zobacz również [Czy istnieje dowolny analog jednoliniowy w ES6 dla ES5 'module.exports = require ('./inner.js')'?] (http://stackoverflow.com/q/32229947/1048572) i [Czy 'eksport {foo as default} 'valid ES6?] (http://stackoverflow.com/q/33155785/1048572) – Bergi

Odpowiedz

61
export {default as Module} from './Module/Module'; 

to standardowy sposób ES6, o ile nie potrzebujesz Module, aby był dostępny również w module wykonującym eksport.

export Module from './Module/Module; 

to proponowana metoda ESnext, ale działa to tylko wtedy, gdy włączyłeś ją w Babelu.

+0

I t pracował świetnie, jednak wygląda na to, że Webpack tego nie lubi, dając powiadomienie, że "składnik" jest teraz tylko do odczytu i nie można go ponownie załadować. Bardzo dziwny! – Detuned

+0

idealne, to powinna być zaakceptowana odpowiedź. (jeśli hot reload webpack nie podoba się, że jest to problem w tym narzędziu lub jest to wtyczka HMR.) – Benja

+6

Jeśli ktokolwiek zastanawia się, która wtyczka jest babel, jest to "export-extensions" tutaj - http://babeljs.io/docs/plugins/transform-export-extensions/ – Noitidart

2

Tak, znalazłem to całkiem dobrze działa na bezpośrednim funkcjonalności eksportową mającą index.js w katalogu głównym components łatwego odwoływania:

import Component from './Component/Component' 
import ComponentTwo from './ComponentTwo/ComponentTwo' 

module.exports = { 
    Component, 
    ComponentTwo 
}; 

Trzeba użyć module.exports.

+3

Należy pamiętać, że ponieważ jest to częściowo moduł CommonJS, będzie to działać tylko w Babel i zakończy się niepowodzeniem, jeśli spróbujesz użyć go w rzeczywistym module ES6, gdy obsługa dla nich znajdzie się w większej liczbie środowisk i prawdopodobnie przestanie działać w przyszłych wersjach Babel. – loganfsmyth

+0

Prawidłowe. Intermingling commonJS & es6 import/export w Babel 6 przerw. Babel5 zezwolił/wzmocnił to nieprawidłowe zachowanie. W twoim przykładzie "Komponent" nie będzie już odwołaniem do wyeksportowanego komponentu, ale będzie obiektem, z referencją do twojego życia na 'Komponent.default' –

+0

Ktoś wie jak to zrobić bez użycia' module.exports' ? Podoba mi się ta metoda pakowania zestawu składników do 'index.js', ale nie mogę zrozumieć składni. 'import x z 'x'; importuj y z "y"; eksportuj domyślne {x, y}; 'następnie' importuj {x} z xy; 'nie działa (i nie mogę się domyślić dlaczego nie) –

2

Nie wiem dlaczego, ale po prostu działa to dla mnie:

index.jsx:

import Component from './Component'; 
import Component2 from './Component2'; 
import Component3 from './Component3'; 
import Component4 from './Component4'; 

export {Component, Component2, Component3, Component4}; 

importować eksportu tak:

import {Component, Component2, Component3, Component4} from '../componets/index'; 
Powiązane problemy