2016-06-07 60 views
0

我有几个​​文件我在头以正确的方式加载JS文件。如何?

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/prototype/1.6.1.0/prototype.js"></script> 
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/scriptaculous/1.8.2/scriptaculous.js"></script> 
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script> 
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script> 

打电话和我所有的JS后什么都依赖于这个库, 但谷歌的网页速度抱怨说,这些脚本是在页面加载阻滞剂文件。所以我试图把所有内容都放在body关闭之前,但是在这种情况下,我将所有的脚本都破坏了,因为它们依赖于jquery。

我试图使用defer,但像这样的脚注相同的问题。我如何加载异步JavaScript库来打破这个漏洞?

+0

必须有其他错误,jQuery不会中断 – towc

+0

请问您可以共享控制台日志吗? –

回答

2

一般的解决方案是使用像RequireJS这样的异步模块加载。这里有一个jQuery集成案例:http://requirejs.org/docs/jquery.html

考虑到“但在这种情况下,我会让所有脚本因为依赖于jquery而被破坏。”你可以添加检查你的JS代码,如:

$(document).ready(function(){ 
    //your jQuery-based code 
}) 


//if jQuery loading failed 
if(!window.jQuery){ 

} 
+0

包含很多脚本我只想优化页面加载而不是重构孔代码 – fefe

+0

我列出的方式 - 重构与AMD或与'''!window.jQuery'''快速补丁。 – shershen

+0

好的,谢谢我会试用requirejs – fefe

0

你可能想看看来自同一主机的文件数量。看看this

0

你喜欢什么实现是AMD(异步模块定义)

异步模块定义(AMD)是一个JavaScript规范,定义一个API用于定义代码模块和它们的依赖,并如果需要,可以异步加载它们。 了解更多:https://en.wikipedia.org/wiki/Asynchronous_module_definition

有对那一堆框架:

也可以加载JS文件手动使用此方法(不推荐)https://stackoverflow.com/a/7719185/1502230