在ES2015模块中,export * from 'someModule'
不从'someModule'导出默认导出,而import * as m from 'someModule'
从'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'
不从“ someModule”导出默认导出是合理的,因为当前模块可能还希望导出自己的默认模块。但是为什么import *
仍然包含默认导出?这是ES2015模块规范中的预期行为吗?
答案 0 :(得分:1)
但是为什么
import *
仍然包含默认导出?
模块名称空间对象包括模块的所有导出。这里的标识符default
没有什么特别的。没有理由明确省略它。
这是ES2015模块规范中的预期行为吗?
是的
export * from 'someModule'
不从“ someModule”导出默认导出是合理的,因为当前模块可能还希望导出自己的默认模块。
Afaik,发生该异常的实际原因是,您可以从多个模块中export *
进行操作,而不会使其default
的输出冲突。