这个问题最初源于一个用$ .getScript动态加载一组javascript文件的想法。
我正在开发几个项目的js-only前端,这些项目共享一些库,如果有一个处理公共库的js文件,那将是很好的(或者至少看起来好像),并且另一个 - 处理特定的库。
我正在谈论的一些前端实际上将作为小部件用于其他网站,直到我们将js文件压缩的过程设置为一个,这也需要将小部件作为单个js包括,然后将所有依赖项包含在队列中。
像: $ .getScript .getScript .getScript
所以这个问题有两个部分: 1.这有意义吗? 2.如果是,怎么做?
谢谢!
答案 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库/文件包