How to include js file in another js file?
Possible Duplicate:
Including a .js file within a .js file
如何将一个JS文件包含到另一个JS文件中,以遵循DRY原则,避免代码重复。
您只能在HTML页面中包含脚本文件,而不能在其他脚本文件中包含。也就是说,您可以编写将"包含"脚本加载到同一页面的javascript:
1 2 3 | var imported = document.createElement('script'); imported.src = '/path/to/imported/script'; document.head.appendChild(imported); |
但是,您的代码很可能依赖于"包含"脚本,在这种情况下,它可能会失败,因为浏览器将异步加载"导入"脚本。您最好的选择是简单地使用第三方库(如jquery或yui),这可以为您解决这个问题。
1 2 3 4 5 6 | // jQuery $.getScript('/path/to/imported/script.js', function() { // script is now loaded and executed. // put your dependent JS here. }); |
我不同意批评
最近我花了很多时间来重现一个相近的问题。众所周知,jquery插件使用相同的技术(请参阅这里的src)来加载文件,但不同的人报告了这方面的工作问题。我可以这样描述这个问题。让我们为您提供由多个脚本组成的javascript库,其中一个
我可以在我的环境中重现这个问题,并且可以看到在InternetExplorer8中脚本的执行顺序可以是另一个包含javascript的顺序。如果您需要包含一些脚本(其中一个脚本依赖于另一个脚本),这是非常困难的问题。问题和在并行加载JavaScript文件中进行了描述。由于建议使用
1 2 | document.writeln("<script type='text/javascript' src='Script1.js'>"); document.writeln("<script type='text/javascript' src='Script2.js'>"); |
在这种情况下,"脚本是并行下载的,但按照写入页面的顺序执行"。从
所以我建议你使用EDCOX1,15。
更新:如果有人感兴趣,他可以尝试在Internet Explorer中加载(和重新加载)页面(页面使用
这是不可能的直接。你也可以写一些预处理器来处理这个问题。
如果我理解正确,那么下面是有助于实现这一目标的内容:
使用一个预处理器来运行JS文件,例如查找类似"@import somefile.js"的模式,并将其替换为实际文件的内容。Nicholas Zakas(雅虎)在爪哇编写了一个这样的库,您可以使用它(HTTP://www. NCZNLNI.NET/BLUG/NI9/09/22/AddioPixel-A JavaScript PTCSS-CONTAATION-Too/)
如果您使用的是Ruby on Rails,那么您可以尝试一下jammit资产打包,它使用assets.yml配置文件,您可以在其中定义包含多个文件的包,然后在实际网页中通过包名称引用它们。
尝试使用像RequireJS这样的模块加载器或像LabJS这样的脚本加载器来控制加载顺序并利用并行下载。
目前,javascript不提供将javascript文件包含到另一个类似css(@import)的文件中的"本机"方法,但上述所有工具/方法都有助于实现您提到的dry原则。我可以理解,如果您来自服务器端的背景,可能感觉不到直观性,但事实就是这样。对于前端开发人员来说,这个问题通常是一个"部署和打包问题"。
希望它有帮助。
你需要这样写
1 | document.write('<scr'+'ipt type="text/javascript" src="other js file.js"></scr'+'ipt>'); |
在第一个JS文件中