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

q35jwt9p  于 2022-10-30  发布在  Java
关注(0)|答案(5)|浏览(190)

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

索引.js

import App from './App';

export default App;

像这样的东西

索引.js

export default App from './App.js'
pes8fvy9

pes8fvy91#

如果您使用proposal-export-default-from Babel plugin(它是stage-1 preset的一部分),则可以使用以下代码重新导出default:

export default from "./App.js"

有关详细信息,请参阅ECMAScript提案。
另一种方法(不使用此插件)是:

export { default as App } from "./App.js"

当单独的文件(每个文件都有自己的export)具有所有共同点(例如,utils)时,上述是一种非常常见的做法,因此,例如,如果一个人想要导入3个 * 实用 * 函数,而不是必须编写多个 * 导入 *:

import util_a from 'utils/util_a' 
import util_b from 'utils/util_b' 
import util_c from 'utils/util_c'

您可以在单行中导入任何实用程序:

import { util_a, util_b , util_c } from 'utils'

通过在/utils文件夹中创建一个index.js文件,并导入其中所有实用程序的所有默认值,然后重新导出,这样index文件将作为与该文件夹相关的所有导入的“网关”。

mqxuamgl

mqxuamgl2#

这与前面的回答有点重复,但为了澄清两个选项的区别:

1.默认导出

(This似乎是OP想要的)

// index.ts
export { default } from './App'

然后,在另一个文件中:

import App from './index'

2.已命名的导出

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

然后,在另一个文件中:

import { App } from './index'

奖励:已命名→默认导出

如果./App使用命名导出,但您希望将其作为默认导出重新导出,也可以执行此操作:

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

然后,在另一个文件中:

import App from './index'

这些将与react一起作为vsync的answer状态工作。

奖金2:导出所有内容

假设您有一个导出多个项目的文件:

// App.ts
export const first = 1

export const second = 2

const final = 3

export default final

然后,您可以直接重新导出它们:

// index.ts
export * from './App'

您现在可以轻松地汇入这些项目:

import final, { first, second } from './index'

奖金3:*导入

您可以将其他文件导出的所有变量作为单个变量导入。

// index.ts
import * as App from './App'

App.first === 1 // true
mrwjdhj3

mrwjdhj33#

import App from './App';

export default App;

巴别塔7(用@babel/preset-react表示)可以变换下图:

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

相关讨论:

  • TC39建议:https://github.com/tc39/proposal-export-default-from#common-concerns
erhoui1w

erhoui1w4#

唯一可行的解决办法是:

import App from './App';

export default App;

如果像这样导出模块

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

那么它就不再是默认导出,如果您尝试将其作为默认导入导入,则会出现错误。

m1m5dgzv

m1m5dgzv5#

import App from './App';
export default (App);

这在默认'create-react-app'应用程序中适用

相关问题