繁体   English   中英

为什么导出*和导入*在ES2015模块中的工作方式不同

[英]Why export * and import * work differently in ES2015 module

在ES2015模块中, export * from 'someModule'不会export * from 'someModule'导出默认导出,而从“ someModule” import * as m from 'someModule'导入默认导出。

例如,在module.js中:

export default 'default'
export const foo = 'foo'

在proxy.js中:

export * from './module'

在bar.js中:

import * as m from './module'  // m is { foo: 'foo', default: 'default' }
import * as p from './proxy'  // p is { foo: 'foo' }

我已经使用webpack 4.29.6(零配置)对其进行了测试。

MDN写道:

以下语法不会从导入的模块导出默认导出:

从…出口*;

如果需要导出默认值,请编写以下内容:

从'mod'导出{default};

export * from 'someModule'导出默认导出是合理的,因为当前模块可能还希望导出自己的默认模块。 但是为什么import *仍然包含默认导出? 这是ES2015模块规范中的预期行为吗?

但是为什么import *仍然包含默认导出?

模块名称空间对象包括模块的所有导出。 此处的default标识符没有什么特别的。 没有理由明确省略它。

这是ES2015模块规范中的预期行为吗?

是。

export * from 'someModule'导出默认导出是合理的,因为当前模块可能还希望导出自己的默认模块。

Afaik,发生异常的实际原因是,您可以从多个模块中export * ,而不会使其default导出冲突。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM