XHR 如何成为异步模块定义的可行替代方案?

How is XHR a viable alternative to asynchronous module definition?

我正在从 here 了解异步模块定义 (AMD) 的情况,但我不太清楚以下内容:

It is tempting to use XMLHttpRequest (XHR) to load the scripts. If XHR is used, then we can massage the text above -- we can do a regexp to find require() calls, make sure we load those scripts, then use eval() or script elements that have their body text set to the text of the script loaded via XHR.

XHR 正在使用 ajax 或其他东西来调用从数据库中获取资源,对吗? eval() 或脚本元素与此有什么关系?一个例子会很有帮助

RequireJS 文档的这一部分解释了为什么使用 XHR 而不是 RequireJS 所做的事情是有问题的。

XHR is using ajax or something to make a call to grab a resource from the database, correct?

XHR 允许您进行 Ajax 调用。 jQuery 的 $.ajax 例如为您创建一个 XHR 实例并使用它来执行查询。服务器如何响应取决于服务器的设计方式。我开发的大多数服务器不会使用数据库来响应对对应于 JavaScript 文件的 URL 的请求。该文件只是从文件系统中读取并发送回客户端。

What does the eval() or script elements have to do with this?

一旦请求结束,你得到的是一个包含JavaScript的字符串。您已经获取了 模块的代码,但您可能 想要执行它。 eval 是一种方法,但它具有文档中提到的缺点。另一种方法是创建一个 script 元素,其主体是您获取的代码,然后将此脚本插入 DOM 但这也有问题,如文档中所述参考。