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