我正在使用构建的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"模块?如果这是不可能的,那么通过静态分析是否有一种常见的方法。如果我的问题没有任何意义,因为我做了一个不正确的假设(最可能的情况),我喜欢这个假设得到纠正。
答案 0 :(得分:4)
tl; dr:不,不。
ES6 Javascript的特定块无法确定它是如何加载的。关于你可以做的最好的是加载Javascript告诉加载的Javascript加载器是如何进行的。
静态分析实际上可以告诉您100%的时间是否会运行特定的代码,因此无法在100%的时间内告诉您是否会加载特定文件。 (这与halting problem有关。)也就是说,100%检测很少是必要的,因为文件请求很少被隐藏到隐藏它们所需的程度。但是,我不知道有一个静态分析工具能够解开常见的Javascript加载技术的更复杂版本,因为通常代码创建者已经知道了他们使代码加载的环境。