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

时间:2016-06-21 16:48:34

标签: xmlhttprequest requirejs amd

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

  

使用XMLHttpRequest(XHR)加载脚本很有诱惑力。如果是XHR   使用,然后我们可以按摩上面的文字 - 我们可以做一个正则表达式   找到require()调用,确保我们加载这些脚本,然后使用eval()   或将其正文设置为文本的脚本元素   脚本通过XHR加载。

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

1 个答案:

答案 0 :(得分:1)

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

  

XHR正在使用ajax或其他东西来调用从数据库中获取资源,对吗?

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

  

eval()或脚本元素与此有什么关系?

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