2015-05-26 29 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}' –