AMD模块 - 在这个示例中它在哪里加载?

时间:2018-05-31 16:24:05

标签: javascript amd

我有一个复杂的情况,涉及从不同来源加载脚本,但要理解我的问题,我认为如果我问一个关于我不太熟悉的AMD模块的简单问题会更容易。

在使用AMD模块的网站上,有一个可用的定义功能。 如果我尝试定义和加载这样的模块会发生什么:

define([], () => { return { thisIsMyTest: true } })

我如何才能知道我刚刚定义的那个模块的访问权限?

我尝试在 require._defined

中查看

但是我无法看到它(我可能也错过了它,因为我不确定要查找的名称)。

想要访问该对象的脚本不是AMD兼容的脚本,但我可以控制该方面,所以我很乐意为它编写代码。

现在为问题添加更多澄清,我有一个加载到网站上的脚本(我无法控制),我的脚本远程加载另一个外部脚本(我没有任何控制权) )。在正常情况下,这个外部脚本将自身暴露为Window对象的变量,但是它支持AMD模块,并且这个站点使用AMD,因此在这种情况下,这个外部脚本使用了加载的define方法,我无法弄清楚如何访问它。

更新

以下是我的代码片段,用于加载我的外部库:

const libScript = document.createElement('script');
libScript.type = 'text/javascript';
libScript.src = '//some/3rdparty/lib.js'; // source 
libScript.onload = () => {  
  // Use the library that normally exists on window.Lib  
  // However libScript in this site loads using AMD  
  // and window.Lib doesn't exist for sites that use AMD  
  // Other non AMD sites work fine. 
}; 
document.head.appendChild(libScript);

0 个答案:

没有答案