[英]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.