是否可以将jquery ajax请求链接为一个级别的队列(不嵌套)

时间:2011-03-03 19:30:55

标签: javascript jquery callback getscript

这个问题最初源于一个用$ .getScript动态加载一组javascript文件的想法。

我正在开发几个项目的js-only前端,这些项目共享一些库,如果有一个处理公共库的js文件,那将是很好的(或者至少看起来好像),并且另一个 - 处理特定的库。

我正在谈论的一些前端实际上将作为小部件用于其他网站,直到我们将js文件压缩的​​过程设置为一个,这也需要将小部件作为单个js包括,然后将所有依赖项包含在队列中。

像: $ .getScript  .getScript  .getScript

所以这个问题有两个部分: 1.这有意义吗? 2.如果是,怎么做?

谢谢!

1 个答案:

答案 0 :(得分:2)

你的意思是:你想写类似

的东西
$.getScript("js/file1.js").getScript("js/file2.js").getScript("js/file3.js");

结果从服务器加载一个文件,其中包含所有指定的文件(file1.js + file2.js + file3.js),不是吗?如果我明白了,那么似乎是不可能的,至少就是这样。它确实有道理,甚至是好的,因为浏览器将发送一个请求而不是三个(因此性能会更好)。 要实现您想要的,您需要服务器端的良好支持。例如。你可以写

$.getScript("js/libraries?files=file1,file2,file3");

并且服务器端应该能够解析此请求,附加请求中提到的所有文件,然后发送给您。但正如您所见,服务器端应该存在某些东西来帮助您;

如果你开发了一些框架,你可以进行预定义的构建,例如你的图书馆将包含

js/
    file1.js
    file2.js
    file3.js
common.js

其中common.js只是file1.js + file2.js + file3.js,您可以将其自动化,因此您将更改代码,然后运行将创建common.js的特殊构建。这样你可以依靠

$.getScript("common.js");

这比请求

更好
$.getScript("js/libraries?files=file1,file2,file3");

因为在最后一个的情况下必须执行一些运行时作业(性能受到一点影响)。当我们开发项目时,我们在服务器端使用jawr来创建预定义的javascript库/文件包