我正在从here了解异步模块定义(AMD)的情况,但我不太清楚以下内容:
使用XMLHttpRequest(XHR)加载脚本很有诱惑力。如果是XHR 使用,然后我们可以按摩上面的文字 - 我们可以做一个正则表达式 找到require()调用,确保我们加载这些脚本,然后使用eval() 或将其正文设置为文本的脚本元素 脚本通过XHR加载。
XHR正在使用ajax或其他东西来调用从数据库中获取资源,对吗? eval()或脚本元素与此有什么关系?一个例子非常有用
答案 0 :(得分:1)
RequireJS'的那部分文档解释了为什么使用XHR而不是执行RequireJS所做的事情是有问题的。
XHR正在使用ajax或其他东西来调用从数据库中获取资源,对吗?
XHR允许您进行Ajax调用。例如,jQuery的$.ajax
为您创建了一个XHR实例,并使用它来执行查询。服务器如何响应取决于服务器的设计方式。我开发的大多数服务器都不会使用数据库来回答对与JavaScript文件相对应的URL的请求。该文件只是从文件系统中读取并发送回客户端。
eval()或脚本元素与此有什么关系?
请求结束后,您拥有的是包含JavaScript的字符串。您已经获取了模块的代码,但可能您也想要执行它。 eval
是一种方法,但它有文档中提到的缺点。另一种方法是创建一个script
元素,其正文是您提取的代码,然后在DOM中插入此脚本,但这也存在问题,如您引用的文档中所述