2016-06-21 8 views
0

Я учусь о случае асинхронного определения модуля (AMD) из here, но я не совсем понятно, о ниже:Как XHR является жизнеспособной альтернативой определению асинхронного модуля?

Заманчиво использовать XMLHttpRequest (XHR) для загрузки скриптов. Если используется XHR , мы можем массировать текст выше - мы можем сделать regexp до найти require() вызовы, убедиться, что мы загружаем эти сценарии, затем используйте eval() или элементы сценария, у которых есть свой текстовый набор к тексту сценария , загруженного через XHR.

XHR использует ajax или что-то сделать, чтобы получить доступ к ресурсу из базы данных, правильно? С чем связаны элементы eval() или скрипта? Пример был бы очень полезен

ответ

1

Эта часть документации RequireJS объясняет, почему использование XHR, а не выполнение требований RequireJS является проблематичным.

XHR использует ajax или что-то сделать, чтобы получить доступ к ресурсу из базы данных, правильно?

XHR - это то, что позволяет вам совершать вызов Ajax. Например, jQuery $.ajax создает для вас экземпляр XHR и использует его для выполнения запроса. Как реагирует сервер, зависит от того, как настроен сервер. Большинство серверов, которые я разработал, не будут использовать базу данных для ответа на запрос, сделанный по URL-адресу, который соответствует файлу JavaScript. Файл просто считывается из файловой системы и отправляется обратно клиенту.

В чем заключаются элементы eval() или script?

Как только запрос завершен, у вас есть строка, содержащая JavaScript. У вас есть вычислено код вашего модуля, но предположительно вы также хотите его выполнить. eval - один из способов сделать это, но он имеет недостатки, упомянутые в документации. Другой способ сделать это - создать элемент script, чей код является кодом, который вы извлекли, а затем вставить этот скрипт в DOM, но это также имеет проблемы, как описано в документации, на которую вы ссылаетесь.