我正在研究headjs (http://www.headjs.com)来加速javascripts的加载。从文档来看,显然有可能控制脚本的执行顺序,然而,解析顺序则是另一回事,afaik尚未确定。
在走这条路之前,我想知道以下内容是否会带来潜在的问题:
并行加载jquery.js和scripts.js,如下:
head.js("//ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js","/js/script.js");
除了其他功能之外,scripts.js还具有一些扩展jquery的功能,例如:
$.fn.extend({ myMethod: function(){...} });
当scripts.js恰好在jquery.js之前加载(和解析)时,这是否会潜在地导致解析问题('$‘或'jquery’未定义),或者是否只在脚本执行时检查'$‘的定义?(这不会没有问题,因为scripts.js是在jquery之后执行的)
我测试了一下,不管顺序是什么:head.js("//ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js","/js/script.js");
和head.js("/js/script.js","//ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js");
在执行以下操作时,该扩展似乎可以工作:
head.ready(function() { $('#someel').myMethod(); });
不知何故,我很高兴它能工作,但同时我也小心翼翼地相信它每次都能工作。毕竟,在定义要在'jquery.js‘之前执行的'scripts.js’时,我希望'$‘是未定义的。
对这件事的一些启发将不胜感激!
谢谢,Geert-Jan
发布于 2011-06-24 22:13:43
通过head.js文档,将触发ready方法:
加载所有脚本且文档可脚本化后执行
因此,无论包含顺序如何,head.ready中的代码都应该是正确的。
https://stackoverflow.com/questions/6468935
复制相似问题