2015-05-26 61 views
0

請考慮以下代碼。ES6/2015中何時導出中斷靜態模塊分辨率

//------ lib.js ------ 
export const willThisBreakStaticModuleResolution = {iAm: 'a literal object'}; 

export default function() {...} 

//------ main.js ------ 
import { willThisBreakStatic } from 'lib.js'; 
... 

會在lib.js命名出口突破靜態模塊分辨率,或者如果一個對象被導出爲默認這是否只發生?

更新

通過「打破靜態解析」,我的意思是,如果在「系統」的所有其它模塊則因而也可以在運行時動態而不是靜態地在編譯時解析。

回答

0

lib.js中的命名導出是否會打破靜態模塊解析,還是僅當對象導出爲默認時纔會發生?

你似乎認爲命名導出成爲某種默認導出的「屬性」。情況並非如此(*),所以這不會影響靜態分辨率。

模塊的輸出通過ExportEntry來描述,並且每個命名輸出以及默認輸出都會有一個輸入。

spec有不同export聲明的示例。


*:當然,transpilers目前可以這樣做來模擬帶有ES5語法的模塊,但這是實現的限制。

+0

感謝您的回答。那麼,它會破壞靜態分辨率嗎? –

+1

否............. –

+0

但是,這會呢? 'export const myFunc = function(){...} export default {afunction:myfunc}' –