4

我正在使用在 ES6 兼容的 javascript 上构建的 javascript 系统(我认为?),该系统已编译/转换为与浏览器兼容的 javascript(Wordpress Calypo,如果重要的话)

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

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

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

4

1 回答 1

4

tl;博士:不,不。

没有办法让特定的 ES6 Javascript 块确定它是如何加载的。你能做的最好的事情就是让加载 Javascript 告诉加载的 Javascript 加载器是如何进行的。

静态分析实际上不能 100% 地告诉您特定代码位是否会运行,因此不能 100% 地告诉您是否会加载特定文件。(这与停止问题有关。)也就是说,鉴于文件请求很少被隐藏到隐藏它们所必需的程度,因此很少需要 100% 检测。但是,我不知道是否有一个静态分析工具能够解开常见 Javascript 加载技术的更复杂版本,因为通常代码创建者已经知道他们在什么情况下加载有问题的代码。

于 2016-08-29T23:58:27.510 回答