headjs解析顺序

时间:2011-06-24 14:06:27

标签: javascript

我正在调查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(){...} });

当在jquery.js之前加载(和解析)scripts.js时,这可能会给出解析问题('$'或'jquery'未定义),或者仅在执行时检查'$'的定义脚本? (这不会给出问题,因为在jquery之后执行scripts.js)

我测试了一些东西并且对顺序毫无意义: 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(); });

不知何故,我觉得它很有意思,但与此同时我会小心相信它每次都会奏效。毕竟,当定义'scripts.js'在'jquery.js'之前执行时,我希望'$'是未定义的。

对此事的一些启示将不胜感激!

谢谢, 吉尔特-扬

1 个答案:

答案 0 :(得分:0)

通过head.js文档,ready方法将触发:

  

加载所有脚本后   该文件是可编写脚本的

因此,无论包含顺序如何,head.ready中的代码都应该正常。