ES6和"谁导入我"?

时间:2016-08-29 23:42:41

标签: javascript ecmascript-6 es6-modules wp-calypso

我正在使用构建的javascript系统(我认为?)与ES6兼容的javascript编译/编译到浏览器兼容的javascript(Wordpress Calypo,if it matters

现代javascript是否有办法反映到调用上下文?换句话说,如果我有一个javascript模块foo

#File: foo/index.js
//...lots of code...
export default () => {
    //...more code...
}

有没有办法在运行时告诉我哪些其他javascript模块和/或文件导入了我的" foo"模块?如果这是不可能的,那么通过静态分析是否有一种常见的方法。如果我的问题没有任何意义,因为我做了一个不正确的假设(最可能的情况),我喜欢这个假设得到纠正。

1 个答案:

答案 0 :(得分:4)

tl; dr:不,不。

ES6 Javascript的特定块无法确定它是如何加载的。关于你可以做的最好的是加载Javascript告诉加载的Javascript加载器是如何进行的。

静态分析实际上可以告诉您100%的时间是否会运行特定的代码,因此无法在100%的时间内告诉您是否会加载特定文件。 (这与halting problem有关。)也就是说,100%检测很少是必要的,因为文件请求很少被隐藏到隐藏它们所需的程度。但是,我不知道有一个静态分析工具能够解开常见的Javascript加载技术的更复杂版本,因为通常代码创建者已经知道了他们使代码加载的环境。