在ES 6模块中重新导出默认值

san*_*hit 52 javascript ecmascript-6 babeljs es6-modules

在ES6中,是否可以缩短以下代码.我有一个App.js文件和一个index.js.

index.js

import App from './App';

export default App;
Run Code Online (Sandbox Code Playgroud)

像这样的东西

index.js

export default App from './App.js'
Run Code Online (Sandbox Code Playgroud)

Mic*_*ski 92

如果您使用proposal-export-default-fromBabel插件(这是stage-1预设的一部分),您将能够使用以下代码重新导出默认值:

export default from "./App.js"
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅ECMAScript提案.


另一种方式(没有这个插件)是:

export { default } from "./App.js"
Run Code Online (Sandbox Code Playgroud)

  • ```export {默认为MyModule}来自"./my-modue.js"; const {oneSmallFunction} = MyModule```加倍努力. (8认同)

Fer*_*ojo 18

这是对先前答案的一些重复,但要澄清两个选项的区别:

1.默认导出

(这似乎是 OP 想要的)

export { default } from './App'

// in a different file
import App from './index'
Run Code Online (Sandbox Code Playgroud)

2.命名导出

export { default as App } from './App'

// in another file
import { App } from './index'
Run Code Online (Sandbox Code Playgroud)

这些将与reactvsync 的回答状态一起使用。


vsy*_*ync 16

import App from './App';

export default App;
Run Code Online (Sandbox Code Playgroud)

?

Babel 7 (with @babel/preset-react) 可以转换以下内容:

export { default as App } from './App.js';
Run Code Online (Sandbox Code Playgroud)

相关讨论:


Mel*_*hia 7

唯一有效的解决方案是:

import App from './App';

export default App;
Run Code Online (Sandbox Code Playgroud)

如果你像这样导出你的模块

export { default as App } from './App.js';
Run Code Online (Sandbox Code Playgroud)

那么它就不再是默认导出,如果您尝试将其作为默认导入导入,您将收到错误消息。