Create an includes file jQuery
问题/问题: 有several JS文件(~(15)与一些函数。不要让他们所有人,包括两个城市,一个在HTML页面中创建的所有文件(包括类与PHP的include(),require()等)。
目标: 这样的目标有两个冰淇淋之类的东西,说:
-
HTML src main.js只读或main.js + includes.js
-
includes.js: 应该把所有的脚本。
-
main.js:应该让所有的includes.js访问脚本。
我已经试着:
-
所有的.getscript美元在includes.js SRC文件,它的HTML和main.js之前,尝试使用的功能的main.js,没有工作。
-
所有的档案.getscript美元美元在includes.js,.getscript includes.js在main.js,只是main.js SRC,试图使用的功能的main.js,没有工作。
-
相同的AA以上,但也includes.js SRC main.js脚本运行之前,两次。
appreciate任何反馈,谢谢。
PS:在已加载的多:我发现这些jQuery javascript files -和这两个,包括:如何使用jQuery的js文件多美元.getscript()方法,但他们不想安静,好死在我寻找。
不需要jquery。尝试更简单的方法。
我做了类似的事情:在多个较小的JS文件中编写代码,但在我的HTML中只包含一个
在服务器上,我可以选择提供单一/模糊的JS,也可以提供类似的服务:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | === all.js === (function() { 'use strict'; var a = [ 'file1', 'utils', 'main', 'jquery.placeholder', ... ]; var i; var s = []; for (i = 0; i < a.length; i += 1) { s = s.concat(['<script src="/js/', a[i], '.js">']); } document.write(s.join('')); }()); |
如您所见,HTML加载
这意味着在调试时,我仍然单独加载文件(因此断点很容易)。如果我想添加一个新的JS文件,我只需编辑我的
当我不进行调试时,我的服务器发送一个单独的
你可以这样做。
例如:
include-js.txt文件:
1 | document.write('<script type="text/javascript" src="main.js"><script type="text/javascript" src="js-file-1.js"><script type="text/javascript" src="js-file-2.js">'); |
HTML文件:
1 2 3 | <head> <script language="javascript" type="text/javascript" src="include-js.txt"> </head> |
如果我正确理解了你的问题,你想让
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | function getScripts(scripts, callback) { var progress = 0; scripts.forEach(function(script) { $.getScript(script, function () { if (++progress == scripts.length) callback(); }); }); } getScripts(["script1.js","script2.js"], function () { // now load the main.js file since all scripts have loaded getScripts(["main.js"], function () { // do something // you have access to all included js files }); }); |
您可以将
注意:正如旁注,将所有JS文件放在一个文件中并添加到HTML中可能更快。更多的文件意味着对服务器的调用更多。除非您使用的是动态环境,其中不同的页面需要不同的JS文件,否则请将所有JS转储到一个文件中。此外,您还可以缩小此文件以使其更快。
1 2 3 4 5 6 7 8 9 10 11 12 | $(function() { var js = ["file1.js","file2.js"]; var load = []; for(script in js) { load.push("<script type="text/javascript" src=" + script +">"); } return load.join(""); }); |