Модули AMD - где он загружается в этом примере? - PullRequest
0 голосов
/ 31 мая 2018

У меня сложная ситуация, когда скрипты загружаются из разных источников, но, чтобы понять мою проблему, я думаю, будет проще, если я задам простой вопрос о модулях 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);
...