依赖于顺序的异步Javascript文件
当使用来评估我的站点的性能时,我得到了70/100,建议我将jquery和bootstrap.js设置为异步,以提高性能 问题是异步脚本不能保证按指定顺序执行。我之前遇到过一个问题,即如果引导加载时未加载jquery,则展开导航栏菜单的按钮不起作用依赖于顺序的异步Javascript文件,javascript,jquery,twitter-bootstrap,asynchronous,pagespeed,Javascript,Jquery,Twitter Bootstrap,Asynchronous,Pagespeed,当使用来评估我的站点的性能时,我得到了70/100,建议我将jquery和bootstrap.js设置为异步,以提高性能 问题是异步脚本不能保证按指定顺序执行。我之前遇到过一个问题,即如果引导加载时未加载jquery,则展开导航栏菜单的按钮不起作用 我如何强制jquery在引导前加载,但仍能获得异步脚本的好处?基本上是说在加载页面之前执行Javascript,您可以将Javascript移动到html的底部(因此它将在页面呈现后执行)或者使用基本相同效果的defer属性 <script
我如何强制jquery在引导前加载,但仍能获得异步脚本的好处?基本上是说在加载页面之前执行Javascript,您可以将Javascript移动到html的底部(因此它将在页面呈现后执行)或者使用基本相同效果的defer属性
<script src="anything.js" defer></script>
您可以用一个函数包装所有依赖jquery的代码。并设置一个间隔工作程序,该工作程序将检查是否已加载所有依赖项
var worker = function() {
if(window.jQuery /* and other stuff */) {
dependenciesLoaded(); /* your app wrapper */
} else {
setTimeout(worker, 30);
}
};
worker();
不过,这是一个相当肮脏的解决方案。期待将您的脚本捆绑到一个或多个具有依赖关系管理的库中。您应该看看:。这将允许您调用每个页面所需的js文件,并且它已经是异步的 按照正确的顺序将它们连接到一个缩小的javascript文件中。这可以解决这个问题,不要只看requirejs——阅读本文:然后再看和